From 617ee324d29abedc95507d5f9d16b2f18778a484 Mon Sep 17 00:00:00 2001 From: Karl Skomski Date: Sun, 16 Aug 1970 16:09:02 +0200 Subject: [PATCH 01/28] src: fix memory leak in ExternString v8 will silently return an empty handle which doesn't delete our data if string length is above String::kMaxLength Fixes: https://github.com/nodejs/node/issues/1374 PR-URL: https://github.com/nodejs/node/pull/2402 Reviewed-By: trevnorris - Trevor Norris Reviewed-By: indutny - Fedor Indutny Reviewed-By: bnoordhuis - Ben Noordhuis --- lib/buffer.js | 12 ++-- src/node_buffer.cc | 4 ++ src/string_bytes.cc | 39 +++++++++---- test/parallel/test-stringbytes-external.js | 66 ++++++++++++++++++++++ 4 files changed, 107 insertions(+), 14 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index 4166724b73248e..13933001e830c7 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -350,10 +350,14 @@ function slowToString(encoding, start, end) { Buffer.prototype.toString = function() { - const length = this.length | 0; - if (arguments.length === 0) - return this.utf8Slice(0, length); - return slowToString.apply(this, arguments); + if (arguments.length === 0) { + var result = this.utf8Slice(0, this.length); + } else { + var result = slowToString.apply(this, arguments); + } + if (result === undefined) + throw new Error('toString failed'); + return result; }; diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 54c4711a1ecaf4..3eceae594690e7 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -1024,6 +1024,10 @@ void Initialize(Handle target, target->Set(env->context(), FIXED_ONE_BYTE_STRING(env->isolate(), "kMaxLength"), Integer::NewFromUnsigned(env->isolate(), kMaxLength)).FromJust(); + + target->Set(env->context(), + FIXED_ONE_BYTE_STRING(env->isolate(), "kStringMaxLength"), + Integer::New(env->isolate(), String::kMaxLength)).FromJust(); } diff --git a/src/string_bytes.cc b/src/string_bytes.cc index 3d568c6ca136ff..7fc03c0f51d93e 100644 --- a/src/string_bytes.cc +++ b/src/string_bytes.cc @@ -22,13 +22,14 @@ using v8::Local; using v8::Object; using v8::String; using v8::Value; +using v8::MaybeLocal; template class ExternString: public ResourceType { public: ~ExternString() override { - delete[] data_; + free(const_cast(data_)); isolate()->AdjustAmountOfExternalAllocatedMemory(-byte_length()); } @@ -52,7 +53,11 @@ class ExternString: public ResourceType { if (length == 0) return scope.Escape(String::Empty(isolate)); - TypeName* new_data = new TypeName[length]; + TypeName* new_data = + static_cast(malloc(length * sizeof(*new_data))); + if (new_data == nullptr) { + return Local(); + } memcpy(new_data, data, length * sizeof(*new_data)); return scope.Escape(ExternString::New(isolate, @@ -72,10 +77,15 @@ class ExternString: public ResourceType { ExternString* h_str = new ExternString(isolate, data, length); - Local str = String::NewExternal(isolate, h_str); + MaybeLocal str = String::NewExternal(isolate, h_str); isolate->AdjustAmountOfExternalAllocatedMemory(h_str->byte_length()); - return scope.Escape(str); + if (str.IsEmpty()) { + delete h_str; + return Local(); + } + + return scope.Escape(str.ToLocalChecked()); } inline Isolate* isolate() const { return isolate_; } @@ -765,11 +775,14 @@ Local StringBytes::Encode(Isolate* isolate, case ASCII: if (contains_non_ascii(buf, buflen)) { - char* out = new char[buflen]; + char* out = static_cast(malloc(buflen)); + if (out == nullptr) { + return Local(); + } force_ascii(buf, out, buflen); if (buflen < EXTERN_APEX) { val = OneByteString(isolate, out, buflen); - delete[] out; + free(out); } else { val = ExternOneByteString::New(isolate, out, buflen); } @@ -797,14 +810,17 @@ Local StringBytes::Encode(Isolate* isolate, case BASE64: { size_t dlen = base64_encoded_size(buflen); - char* dst = new char[dlen]; + char* dst = static_cast(malloc(dlen)); + if (dst == nullptr) { + return Local(); + } size_t written = base64_encode(buf, buflen, dst, dlen); CHECK_EQ(written, dlen); if (dlen < EXTERN_APEX) { val = OneByteString(isolate, dst, dlen); - delete[] dst; + free(dst); } else { val = ExternOneByteString::New(isolate, dst, dlen); } @@ -813,13 +829,16 @@ Local StringBytes::Encode(Isolate* isolate, case HEX: { size_t dlen = buflen * 2; - char* dst = new char[dlen]; + char* dst = static_cast(malloc(dlen)); + if (dst == nullptr) { + return Local(); + } size_t written = hex_encode(buf, buflen, dst, dlen); CHECK_EQ(written, dlen); if (dlen < EXTERN_APEX) { val = OneByteString(isolate, dst, dlen); - delete[] dst; + free(dst); } else { val = ExternOneByteString::New(isolate, dst, dlen); } diff --git a/test/parallel/test-stringbytes-external.js b/test/parallel/test-stringbytes-external.js index ba3f0c5d1d9ade..be0c90d47f9f1f 100644 --- a/test/parallel/test-stringbytes-external.js +++ b/test/parallel/test-stringbytes-external.js @@ -107,3 +107,69 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS; assert.equal(a, b); assert.equal(b, c); })(); + +// v8 fails silently if string length > v8::String::kMaxLength +(function() { + // v8::String::kMaxLength defined in v8.h + const kStringMaxLength = process.binding('buffer').kStringMaxLength; + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString(); + }, /toString failed|Buffer allocation failed/); + + try { + new Buffer(kStringMaxLength * 4); + } catch(e) { + assert.equal(e.message, 'Buffer allocation failed - process out of memory'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; + } + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString('ascii'); + }, /toString failed/); + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString('utf8'); + }, /toString failed/); + + assert.throws(function() { + new Buffer(kStringMaxLength * 2 + 2).toString('utf16le'); + }, /toString failed/); + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString('binary'); + }, /toString failed/); + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString('base64'); + }, /toString failed/); + + assert.throws(function() { + new Buffer(kStringMaxLength + 1).toString('hex'); + }, /toString failed/); + + var maxString = new Buffer(kStringMaxLength).toString(); + assert.equal(maxString.length, kStringMaxLength); + // Free the memory early instead of at the end of the next assignment + maxString = undefined; + + maxString = new Buffer(kStringMaxLength).toString('binary'); + assert.equal(maxString.length, kStringMaxLength); + maxString = undefined; + + maxString = + new Buffer(kStringMaxLength + 1).toString('binary', 1); + assert.equal(maxString.length, kStringMaxLength); + maxString = undefined; + + maxString = + new Buffer(kStringMaxLength + 1).toString('binary', 0, kStringMaxLength); + assert.equal(maxString.length, kStringMaxLength); + maxString = undefined; + + maxString = new Buffer(kStringMaxLength + 2).toString('utf16le'); + assert.equal(maxString.length, (kStringMaxLength + 2) / 2); + maxString = undefined; +})(); From 56d9584a0ead78874ca9d4de2e55b41c4056e502 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 31 Aug 2015 00:49:34 +0200 Subject: [PATCH 02/28] child_process: add callback parameter to .send() Add an optional callback parameter to `ChildProcess.prototype.send()` that is invoked when the message has been sent. Juggle the control channel's reference count so that in-flight messages keep the event loop (and therefore the process) alive until they have been sent. `ChildProcess.prototype.send()` and `process.send()` used to operate synchronously but became asynchronous in commit libuv/libuv@393c1c5 ("unix: set non-block mode in uv_{pipe,tcp,udp}_open"), which landed in io.js in commit 07bd05b ("deps: update libuv to 1.2.1"). Fixes: https://github.com/nodejs/node/issues/760 PR-URL: https://github.com/nodejs/node/pull/2620 Reviewed-By: trevnorris - Trevor Norris Reviewed-By: jasnell - James M Snell --- doc/api/child_process.markdown | 23 ++++-- doc/api/cluster.markdown | 4 +- lib/child_process.js | 10 +-- lib/internal/child_process.js | 91 ++++++++++++++++----- test/parallel/test-child-process-send-cb.js | 19 +++++ 5 files changed, 111 insertions(+), 36 deletions(-) create mode 100644 test/parallel/test-child-process-send-cb.js diff --git a/doc/api/child_process.markdown b/doc/api/child_process.markdown index 05308068a98e88..31ac72451d5e1b 100644 --- a/doc/api/child_process.markdown +++ b/doc/api/child_process.markdown @@ -214,13 +214,15 @@ to a process. See `kill(2)` -### child.send(message[, sendHandle]) +### child.send(message[, sendHandle][, callback]) * `message` {Object} * `sendHandle` {Handle object} +* `callback` {Function} +* Return: Boolean When using `child_process.fork()` you can write to the child using -`child.send(message, [sendHandle])` and messages are received by +`child.send(message[, sendHandle][, callback])` and messages are received by a `'message'` event on the child. For example: @@ -246,11 +248,6 @@ And then the child script, `'sub.js'` might look like this: In the child the `process` object will have a `send()` method, and `process` will emit objects each time it receives a message on its channel. -Please note that the `send()` method on both the parent and child are -synchronous - sending large chunks of data is not advised (pipes can be used -instead, see -[`child_process.spawn`](#child_process_child_process_spawn_command_args_options)). - There is a special case when sending a `{cmd: 'NODE_foo'}` message. All messages containing a `NODE_` prefix in its `cmd` property will not be emitted in the `message` event, since they are internal messages used by Node.js core. @@ -261,8 +258,16 @@ The `sendHandle` option to `child.send()` is for sending a TCP server or socket object to another process. The child will receive the object as its second argument to the `message` event. -Emits an `'error'` event if the message cannot be sent, for example because -the child process has already exited. +The `callback` option is a function that is invoked after the message is +sent but before the target may have received it. It is called with a single +argument: `null` on success, or an `Error` object on failure. + +`child.send()` emits an `'error'` event if no callback was given and the message +cannot be sent, for example because the child process has already exited. + +Returns `true` under normal circumstances or `false` when the backlog of +unsent messages exceeds a threshold that makes it unwise to send more. +Use the callback mechanism to implement flow control. #### Example: sending server object diff --git a/doc/api/cluster.markdown b/doc/api/cluster.markdown index 53f6e0a28453aa..d29d5973d85540 100644 --- a/doc/api/cluster.markdown +++ b/doc/api/cluster.markdown @@ -426,10 +426,12 @@ exit, the master may choose not to respawn a worker based on this value. // kill worker worker.kill(); -### worker.send(message[, sendHandle]) +### worker.send(message[, sendHandle][, callback]) * `message` {Object} * `sendHandle` {Handle object} +* `callback` {Function} +* Return: Boolean Send a message to a worker or master, optionally with a handle. diff --git a/lib/child_process.js b/lib/child_process.js index 57a8601df59a98..a92347784612a5 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -48,16 +48,12 @@ exports._forkChild = function(fd) { var p = new Pipe(true); p.open(fd); p.unref(); - setupChannel(process, p); - - var refs = 0; + const control = setupChannel(process, p); process.on('newListener', function(name) { - if (name !== 'message' && name !== 'disconnect') return; - if (++refs === 1) p.ref(); + if (name === 'message' || name === 'disconnect') control.ref(); }); process.on('removeListener', function(name) { - if (name !== 'message' && name !== 'disconnect') return; - if (--refs === 0) p.unref(); + if (name === 'message' || name === 'disconnect') control.unref(); }); }; diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index c6bb41ffdeb544..6d1c22d03b48ee 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -397,6 +397,25 @@ function setupChannel(target, channel) { target._channel = channel; target._handleQueue = null; + const control = new class extends EventEmitter { + constructor() { + super(); + this.channel = channel; + this.refs = 0; + } + ref() { + if (++this.refs === 1) { + this.channel.ref(); + } + } + unref() { + if (--this.refs === 0) { + this.channel.unref(); + this.emit('unref'); + } + } + }; + var decoder = new StringDecoder('utf8'); var jsonBuffer = ''; channel.buffering = false; @@ -446,7 +465,7 @@ function setupChannel(target, channel) { target._handleQueue = null; queue.forEach(function(args) { - target._send(args.message, args.handle, false); + target._send(args.message, args.handle, false, args.callback); }); // Process a pending disconnect (if any). @@ -478,14 +497,24 @@ function setupChannel(target, channel) { }); }); - target.send = function(message, handle) { - if (!this.connected) - this.emit('error', new Error('channel closed')); - else - this._send(message, handle, false); + target.send = function(message, handle, callback) { + if (typeof handle === 'function') { + callback = handle; + handle = undefined; + } + if (this.connected) { + this._send(message, handle, false, callback); + return; + } + const ex = new Error('channel closed'); + if (typeof callback === 'function') { + process.nextTick(callback, ex); + } else { + this.emit('error', ex); // FIXME(bnoordhuis) Defer to next tick. + } }; - target._send = function(message, handle, swallowErrors) { + target._send = function(message, handle, swallowErrors, callback) { assert(this.connected || this._channel); if (message === undefined) @@ -516,7 +545,11 @@ function setupChannel(target, channel) { // Queue-up message and handle if we haven't received ACK yet. if (this._handleQueue) { - this._handleQueue.push({ message: message.msg, handle: handle }); + this._handleQueue.push({ + callback: callback, + handle: handle, + message: message.msg, + }); return; } @@ -538,24 +571,43 @@ function setupChannel(target, channel) { } else if (this._handleQueue && !(message && message.cmd === 'NODE_HANDLE_ACK')) { // Queue request anyway to avoid out-of-order messages. - this._handleQueue.push({ message: message, handle: null }); + this._handleQueue.push({ + callback: callback, + handle: null, + message: message, + }); return; } var req = new WriteWrap(); - req.oncomplete = nop; + req.async = false; + var string = JSON.stringify(message) + '\n'; var err = channel.writeUtf8String(req, string, handle); - if (err) { - if (!swallowErrors) - this.emit('error', errnoException(err, 'write')); - } else if (handle && !this._handleQueue) { - this._handleQueue = []; - } - - if (obj && obj.postSend) { - req.oncomplete = obj.postSend.bind(null, handle); + if (err === 0) { + if (handle && !this._handleQueue) + this._handleQueue = []; + req.oncomplete = function() { + if (this.async === true) + control.unref(); + if (obj && obj.postSend) + obj.postSend(handle); + if (typeof callback === 'function') + callback(null); + }; + if (req.async === true) { + control.ref(); + } else { + process.nextTick(function() { req.oncomplete(); }); + } + } else if (!swallowErrors) { + const ex = errnoException(err, 'write'); + if (typeof callback === 'function') { + process.nextTick(callback, ex); + } else { + this.emit('error', ex); // FIXME(bnoordhuis) Defer to next tick. + } } /* If the master is > 2 read() calls behind, please stop sending. */ @@ -616,6 +668,7 @@ function setupChannel(target, channel) { }; channel.readStart(); + return control; } diff --git a/test/parallel/test-child-process-send-cb.js b/test/parallel/test-child-process-send-cb.js new file mode 100644 index 00000000000000..d65a1abd204a04 --- /dev/null +++ b/test/parallel/test-child-process-send-cb.js @@ -0,0 +1,19 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const fork = require('child_process').fork; + +if (process.argv[2] === 'child') { + process.send('ok', common.mustCall(function(err) { + assert.strictEqual(err, null); + })); +} else { + const child = fork(process.argv[1], ['child']); + child.on('message', common.mustCall(function(message) { + assert.strictEqual(message, 'ok'); + })); + child.on('exit', common.mustCall(function(exitCode, signalCode) { + assert.strictEqual(exitCode, 0); + assert.strictEqual(signalCode, null); + })); +} From abbc8dbf95d3dfc1b4c4b56b66f78c0d06eef0d2 Mon Sep 17 00:00:00 2001 From: Alexis Campailla Date: Wed, 2 Sep 2015 11:30:00 +0200 Subject: [PATCH 03/28] test: mark eval_messages as flaky This test has failed recently during a PR test in Jenkins, for reasons seemingly not related to the change in the PR. PR-URL: https://github.com/nodejs/node/pull/2648 Reviewed-By: evanlucas - Evan Lucas --- test/message/message.status | 1 + 1 file changed, 1 insertion(+) diff --git a/test/message/message.status b/test/message/message.status index 1a4a0e3adc2727..67c6de53424872 100644 --- a/test/message/message.status +++ b/test/message/message.status @@ -9,6 +9,7 @@ prefix message [$system==win32] [$system==linux] +eval_messages : PASS,FLAKY [$system==macos] From 6ce8f5f58bc657a900039e711b44a8c3d31ea472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bergstr=C3=B6m?= Date: Sat, 25 Jul 2015 16:09:59 +1000 Subject: [PATCH 04/28] doc: reorder collaborators by their usernames Fixes: https://github.com/nodejs/node/issues/1972 PR-URL: https://github.com/nodejs/node/pull/2322 Reviewed-By: orangemocha - Alexis Campailla Reviewed-By: thefourtheye - Sakthipriyan Vairamani --- README.md | 88 +++++++++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 436169ef4327f5..6c0770824338ae 100644 --- a/README.md +++ b/README.md @@ -331,53 +331,53 @@ information about the governance of the Node.js project, see ### TSC (Technical Steering Committee) -* **Ben Noordhuis** <info@bnoordhuis.nl> ([@bnoordhuis](https://github.com/bnoordhuis)) -* **Bert Belder** <bertbelder@gmail.com> ([@piscisaureus](https://github.com/piscisaureus)) -* **Fedor Indutny** <fedor.indutny@gmail.com> ([@indutny](https://github.com/indutny)) -* **Trevor Norris** <trev.norris@gmail.com> ([@trevnorris](https://github.com/trevnorris)) -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> ([@chrisdickinson](https://github.com/chrisdickinson)) -* **Rod Vagg** <rod@vagg.org> ([@rvagg](https://github.com/rvagg)) -* **Jeremiah Senkpiel** <fishrock123@rocketmail.com> ([@fishrock123](https://github.com/fishrock123)) -* **Colin Ihrig** <cjihrig@gmail.com> ([@cjihrig](https://github.com/cjihrig)) -* **Alexis Campailla** <orangemocha@nodejs.org> ([@orangemocha](https://github.com/orangemocha)) -* **Julien Gilli** <jgilli@nodejs.org> ([@misterdjules](https://github.com/misterdjules)) -* **James M Snell** <jasnell@gmail.com> ([@jasnell](https://github.com/jasnell)) -* **Steven R Loomis** <srloomis@us.ibm.com> ([@srl295](https://github.com/srl295)) -* **Michael Dawson** <michael_dawson@ca.ibm.com> ([@mhdawson](https://github.com/mhdawson)) -* **Shigeki Ohtsu** <ohtsu@iij.ad.jp> ([@shigeki](https://github.com/shigeki)) -* **Brian White** <mscdex@mscdex.net> ([@mscdex](https://github.com/mscdex)) +* [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <info@bnoordhuis.nl> +* [chrisdickinson](https://github.com/chrisdickinson) - **Chris Dickinson** <christopher.s.dickinson@gmail.com> +* [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <cjihrig@gmail.com> +* [fishrock123](https://github.com/fishrock123) - **Jeremiah Senkpiel** <fishrock123@rocketmail.com> +* [indutny](https://github.com/indutny) - **Fedor Indutny** <fedor.indutny@gmail.com> +* [jasnell](https://github.com/jasnell) - **James M Snell** <jasnell@gmail.com> +* [mhdawson](https://github.com/mhdawson) - **Michael Dawson** <michael_dawson@ca.ibm.com> +* [misterdjules](https://github.com/misterdjules) - **Julien Gilli** <jgilli@nodejs.org> +* [mscdex](https://github.com/mscdex) - **Brian White** <mscdex@mscdex.net> +* [orangemocha](https://github.com/orangemocha) - **Alexis Campailla** <orangemocha@nodejs.org> +* [piscisaureus](https://github.com/piscisaureus) - **Bert Belder** <bertbelder@gmail.com> +* [rvagg](https://github.com/rvagg) - **Rod Vagg** <rod@vagg.org> +* [shigeki](https://github.com/shigeki) - **Shigeki Ohtsu** <ohtsu@iij.ad.jp> +* [srl295](https://github.com/srl295) - **Steven R Loomis** <srloomis@us.ibm.com> +* [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <trev.norris@gmail.com> ### Collaborators -* **Isaac Z. Schlueter** <i@izs.me> ([@isaacs](https://github.com/isaacs)) -* **Mikeal Rogers** <mikeal.rogers@gmail.com> ([@mikeal](https://github.com/mikeal)) -* **Thorsten Lorenz** <thlorenz@gmx.de> ([@thlorenz](https://github.com/thlorenz)) -* **Stephen Belanger** <admin@stephenbelanger.com> ([@qard](https://github.com/qard)) -* **Evan Lucas** <evanlucas@me.com> ([@evanlucas](https://github.com/evanlucas)) -* **Brendan Ashworth** <brendan.ashworth@me.com> ([@brendanashworth](https://github.com/brendanashworth)) -* **Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> ([@vkurchatkin](https://github.com/vkurchatkin)) -* **Nikolai Vavilov** <vvnicholas@gmail.com> ([@seishun](https://github.com/seishun)) -* **Nicu Micleușanu** <micnic90@gmail.com> ([@micnic](https://github.com/micnic)) -* **Aleksey Smolenchuk** <lxe@lxe.co> ([@lxe](https://github.com/lxe)) -* **Sam Roberts** <vieuxtech@gmail.com> ([@sam-github](https://github.com/sam-github)) -* **Wyatt Preul** <wpreul@gmail.com> ([@geek](https://github.com/geek)) -* **Christian Tellnes** <christian@tellnes.no> ([@tellnes](https://github.com/tellnes)) -* **Robert Kowalski** <rok@kowalski.gd> ([@robertkowalski](https://github.com/robertkowalski)) -* **Julian Duque** <julianduquej@gmail.com> ([@julianduque](https://github.com/julianduque)) -* **Johan Bergström** <bugs@bergstroem.nu> ([@jbergstroem](https://github.com/jbergstroem)) -* **Roman Reiss** <me@silverwind.io> ([@silverwind](https://github.com/silverwind)) -* **Petka Antonov** <petka_antonov@hotmail.com> ([@petkaantonov](https://github.com/petkaantonov)) -* **Yosuke Furukawa** <yosuke.furukawa@gmail.com> ([@yosuke-furukawa](https://github.com/yosuke-furukawa)) -* **Alex Kocharin** <alex@kocharin.ru> ([@rlidwka](https://github.com/rlidwka)) -* **Christopher Monsanto** <chris@monsan.to> ([@monsanto](https://github.com/monsanto)) -* **Ali Ijaz Sheikh** <ofrobots@google.com> ([@ofrobots](https://github.com/ofrobots)) -* **Oleg Elifantiev** <oleg@elifantiev.ru> ([@Olegas](https://github.com/Olegas)) -* **Domenic Denicola** <d@domenic.me> ([@domenic](https://github.com/domenic)) -* **Rich Trott** <rtrott@gmail.com> ([@Trott](https://github.com/Trott)) -* **Сковорода Никита Андреевич** <chalkerx@gmail.com> ([@ChALkeR](https://github.com/ChALkeR)) -* **Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> ([@thefourtheye](https://github.com/thefourtheye)) -* **Michaël Zasso** <mic.besace@gmail.com> ([@targos](https://github.com/targos)) -* **João Reis** <reis@janeasystems.com> ([@joaocgreis](https://github.com/joaocgreis)) +* [brendanashworth](https://github.com/brendanashworth) - **Brendan Ashworth** <brendan.ashworth@me.com> +* [ChALkeR](https://github.com/ChALkeR) - **Сковорода Никита Андреевич** <chalkerx@gmail.com> +* [domenic](https://github.com/domenic) - **Domenic Denicola** <d@domenic.me> +* [evanlucas](https://github.com/evanlucas) - **Evan Lucas** <evanlucas@me.com> +* [geek](https://github.com/geek) - **Wyatt Preul** <wpreul@gmail.com> +* [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <i@izs.me> +* [jbergstroem](https://github.com/jbergstroem) - **Johan Bergström** <bugs@bergstroem.nu> +* [joaocgreis](https://github.com/joaocgreis) - **João Reis** <reis@janeasystems.com> +* [julianduque](https://github.com/julianduque) - **Julian Duque** <julianduquej@gmail.com> +* [lxe](https://github.com/lxe) - **Aleksey Smolenchuk** <lxe@lxe.co> +* [micnic](https://github.com/micnic) - **Nicu Micleușanu** <micnic90@gmail.com> +* [mikeal](https://github.com/mikeal) - **Mikeal Rogers** <mikeal.rogers@gmail.com> +* [monsanto](https://github.com/monsanto) - **Christopher Monsanto** <chris@monsan.to> +* [ofrobots](https://github.com/ofrobots) - **Ali Ijaz Sheikh** <ofrobots@google.com> +* [Olegas](https://github.com/Olegas) - **Oleg Elifantiev** <oleg@elifantiev.ru> +* [petkaantonov](https://github.com/petkaantonov) - **Petka Antonov** <petka_antonov@hotmail.com> +* [qard](https://github.com/qard) - **Stephen Belanger** <admin@stephenbelanger.com> +* [rlidwka](https://github.com/rlidwka) - **Alex Kocharin** <alex@kocharin.ru> +* [robertkowalski](https://github.com/robertkowalski) - **Robert Kowalski** <rok@kowalski.gd> +* [sam-github](https://github.com/sam-github) - **Sam Roberts** <vieuxtech@gmail.com> +* [seishun](https://github.com/seishun) - **Nikolai Vavilov** <vvnicholas@gmail.com> +* [silverwind](https://github.com/silverwind) - **Roman Reiss** <me@silverwind.io> +* [targos](https://github.com/targos) - **Michaël Zasso** <mic.besace@gmail.com> +* [tellnes](https://github.com/tellnes) - **Christian Tellnes** <christian@tellnes.no> +* [thefourtheye](https://github.com/thefourtheye) - **Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> +* [thlorenz](https://github.com/thlorenz) - **Thorsten Lorenz** <thlorenz@gmx.de> +* [Trott](https://github.com/Trott) - **Rich Trott** <rtrott@gmail.com> +* [vkurchatkin](https://github.com/vkurchatkin) - **Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> +* [yosuke-furukawa](https://github.com/yosuke-furukawa) - **Yosuke Furukawa** <yosuke.furukawa@gmail.com> Collaborators & TSC members follow the [COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in maintaining the Node.js project. From 47e5cf7262a183358bd26756c03759992a29aee4 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Fri, 28 Aug 2015 16:58:18 -0400 Subject: [PATCH 05/28] doc: update url doc to account for escaping Fixes: https://github.com/nodejs/node/issues/2113 Ref: 17a379ec39a34408477ac6a43751c1b9b2e952a4 PR-URL: https://github.com/nodejs/node/pull/2605 Reviewed-By: jasnell - James M Snell Reviewed-By: cjihrig - Colin Ihrig Reviewed-By: mscdex - Brian White --- doc/api/url.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/api/url.markdown b/doc/api/url.markdown index bc54bee360f977..cd4797777f07ec 100644 --- a/doc/api/url.markdown +++ b/doc/api/url.markdown @@ -5,6 +5,8 @@ This module has utilities for URL resolution and parsing. Call `require('url')` to use it. +## URL Parsing + Parsed URL objects have some or all of the following fields, depending on whether or not they exist in the URL string. Any parts that are not in the URL string will not be in the parsed object. Examples are shown for the URL @@ -64,6 +66,15 @@ string will not be in the parsed object. Examples are shown for the URL Example: `'#hash'` +### Escaped Characters + +Spaces (`' '`) and the following characters will be automatically escaped in the +properties of URL objects: + + < > " ` \r \n \t { } | \ ^ ' + +--- + The following methods are provided by the URL module: ## url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) From 8ca9ea23408037ea289ffc845c2c7e754acd8fc7 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 28 Aug 2015 19:56:22 -0700 Subject: [PATCH 06/28] test: refactor to eliminate flaky test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This retains the key elements of test-child-process-fork-getconnections (forks a child process, sends a bunch of sockets, uses getConnections() to enumerate them) but contains some code to work around an apparent intermittent bug that occurs on OS X where a socket seems to close itself unexpectedly. https://github.com/nodejs/node/issues/2610 was opened for the bug that was causing the problem in the first place. PR-URL: https://github.com/nodejs/node/pull/2609 Fixes: https://github.com/nodejs/node/issues/1100 Reviewed-By: jbergstroem - Johan Bergström Reviewed-By: Brendan Ashworth --- test/sequential/sequential.status | 1 - .../test-child-process-fork-getconnections.js | 59 ++++++++++--------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status index f61d98b63a0035..e7f0ca2b323992 100644 --- a/test/sequential/sequential.status +++ b/test/sequential/sequential.status @@ -5,7 +5,6 @@ prefix sequential # sample-test : PASS,FLAKY [true] # This section applies to all platforms -test-child-process-fork-getconnections : PASS,FLAKY test-repl-persistent-history : PASS,FLAKY [$system==win32] diff --git a/test/sequential/test-child-process-fork-getconnections.js b/test/sequential/test-child-process-fork-getconnections.js index a587713b6132f2..934df28d7988b7 100644 --- a/test/sequential/test-child-process-fork-getconnections.js +++ b/test/sequential/test-child-process-fork-getconnections.js @@ -1,48 +1,52 @@ 'use strict'; -var assert = require('assert'); -var common = require('../common'); -var fork = require('child_process').fork; -var net = require('net'); -var count = 12; +const assert = require('assert'); +const common = require('../common'); +const fork = require('child_process').fork; +const net = require('net'); +const count = 12; if (process.argv[2] === 'child') { - var sockets = []; - var id = process.argv[3]; + let sockets = []; process.on('message', function(m, socket) { + function sendClosed(id) { + process.send({ id: id, status: 'closed'}); + }; + if (m.cmd === 'new') { assert(socket); assert(socket instanceof net.Socket, 'should be a net.Socket'); sockets.push(socket); - socket.on('end', function() { - if (!this.closingOnPurpose) - throw new Error('[c] closing by accident!'); - }); } if (m.cmd === 'close') { assert.equal(socket, undefined); - sockets[m.id].once('close', function() { - process.send({ id: m.id, status: 'closed' }); - }); - sockets[m.id].destroy(); + if (sockets[m.id].destroyed) { + // Workaround for https://github.com/nodejs/node/issues/2610 + sendClosed(m.id); + // End of workaround. When bug is fixed, this code can be used instead: + // throw new Error('socket destroyed unexpectedly!'); + } else { + sockets[m.id].once('close', sendClosed.bind(null, m.id)); + sockets[m.id].destroy(); + } } }); } else { - var child = fork(process.argv[1], ['child']); + const child = fork(process.argv[1], ['child']); child.on('exit', function(code, signal) { if (!childKilled) throw new Error('child died unexpectedly!'); }); - var server = net.createServer(); - var sockets = []; - var sent = 0; + const server = net.createServer(); + let sockets = []; + let sent = 0; server.on('connection', function(socket) { - child.send({ cmd: 'new' }, socket, { track: false }); + child.send({ cmd: 'new' }, socket); sockets.push(socket); if (sockets.length === count) { @@ -50,21 +54,18 @@ if (process.argv[2] === 'child') { } }); - var disconnected = 0; - var clients = []; + let disconnected = 0; server.on('listening', function() { - var j = count, client; + let j = count, client; while (j--) { client = net.connect(common.PORT, '127.0.0.1'); - client.id = j; client.on('close', function() { disconnected += 1; }); - clients.push(client); } }); - var childKilled = false; + let childKilled = false; function closeSockets(i) { if (i === count) { childKilled = true; @@ -73,17 +74,17 @@ if (process.argv[2] === 'child') { return; } - sent++; - child.send({ id: i, cmd: 'close' }); child.once('message', function(m) { assert(m.status === 'closed'); server.getConnections(function(err, num) { closeSockets(i + 1); }); }); + sent++; + child.send({ id: i, cmd: 'close' }); }; - var closeEmitted = false; + let closeEmitted = false; server.on('close', function() { closeEmitted = true; }); From 107cbd6fa955d4e1c085a5956f1614405863873a Mon Sep 17 00:00:00 2001 From: James M Snell Date: Wed, 2 Sep 2015 14:16:24 -0700 Subject: [PATCH 07/28] child_process: check execFile and fork args Port of joyent/node commits: * https://github.com/nodejs/node-v0.x-archive/commit/e17c5a72b23f920f291d61f2780068c18768cb92 * https://github.com/nodejs/node-v0.x-archive/commit/70dafa7b624abd43432e03304d65cc527fbecc11 Pull over test-child-process-spawn-typeerror.js from v0.12, replacing the existing test in master. The new test includes a broader set of tests on the various arg choices and throws. Reviewed-By: trevnorris - Trevor Norris Reviewed-By: cjihrig - Colin Ihrig Reviewed-By: thefourtheye - Sakthipriyan Vairamani PR-URL: https://github.com/nodejs/node/pull/2667 Fixes: https://github.com/nodejs/node/issues/2515 --- lib/child_process.js | 30 +++-- .../test-child-process-spawn-typeerror.js | 103 ++++++++++++++++-- 2 files changed, 114 insertions(+), 19 deletions(-) diff --git a/lib/child_process.js b/lib/child_process.js index a92347784612a5..0fe9ca75c7794a 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -23,6 +23,8 @@ exports.fork = function(modulePath /*, args, options*/) { if (Array.isArray(arguments[1])) { args = arguments[1]; options = util._extend({}, arguments[2]); + } else if (arguments[1] && typeof arguments[1] !== 'object') { + throw new TypeError('Incorrect value of args option'); } else { args = []; options = util._extend({}, arguments[1]); @@ -104,7 +106,7 @@ exports.exec = function(command /*, options, callback*/) { exports.execFile = function(file /*, args, options, callback*/) { - var args, callback; + var args = [], callback; var options = { encoding: 'utf8', timeout: 0, @@ -114,18 +116,26 @@ exports.execFile = function(file /*, args, options, callback*/) { env: null }; - // Parse the parameters. + // Parse the optional positional parameters. + var pos = 1; + if (pos < arguments.length && Array.isArray(arguments[pos])) { + args = arguments[pos++]; + } else if (pos < arguments.length && arguments[pos] == null) { + pos++; + } - if (typeof arguments[arguments.length - 1] === 'function') { - callback = arguments[arguments.length - 1]; + if (pos < arguments.length && typeof arguments[pos] === 'object') { + options = util._extend(options, arguments[pos++]); + } else if (pos < arguments.length && arguments[pos] == null) { + pos++; } - if (Array.isArray(arguments[1])) { - args = arguments[1]; - options = util._extend(options, arguments[2]); - } else { - args = []; - options = util._extend(options, arguments[1]); + if (pos < arguments.length && typeof arguments[pos] === 'function') { + callback = arguments[pos++]; + } + + if (pos === 1 && arguments.length > 1) { + throw new TypeError('Incorrect value of args option'); } var child = spawn(file, args, { diff --git a/test/parallel/test-child-process-spawn-typeerror.js b/test/parallel/test-child-process-spawn-typeerror.js index 348ab2491dd2f8..44d67e86086f0b 100644 --- a/test/parallel/test-child-process-spawn-typeerror.js +++ b/test/parallel/test-child-process-spawn-typeerror.js @@ -1,14 +1,19 @@ 'use strict'; -var assert = require('assert'); -var child_process = require('child_process'); -var spawn = child_process.spawn; -var cmd = require('../common').isWindows ? 'rundll32' : 'ls'; -var invalidArgsMsg = /Incorrect value of args option/; -var invalidOptionsMsg = /options argument must be an object/; - -// verify that args argument must be an array +const assert = require('assert'); +const child_process = require('child_process'); +const spawn = child_process.spawn; +const fork = child_process.fork; +const execFile = child_process.execFile; +const common = require('../common'); +const cmd = common.isWindows ? 'rundll32' : 'ls'; +const invalidcmd = 'hopefully_you_dont_have_this_on_your_machine'; +const invalidArgsMsg = /Incorrect value of args option/; +const invalidOptionsMsg = /options argument must be an object/; +const empty = common.fixturesDir + '/empty.js'; + assert.throws(function() { - spawn(cmd, 'this is not an array'); + var child = spawn(invalidcmd, 'this is not an array'); + child.on('error', assert.fail); }, TypeError); // verify that valid argument combinations do not throw @@ -49,3 +54,83 @@ assert.throws(function() { spawn(cmd, [], 1); }, invalidOptionsMsg); +// Argument types for combinatorics +const a = []; +const o = {}; +const c = function callback() {}; +const s = 'string'; +const u = undefined; +const n = null; + +// function spawn(file=f [,args=a] [, options=o]) has valid combinations: +// (f) +// (f, a) +// (f, a, o) +// (f, o) +assert.doesNotThrow(function() { spawn(cmd); }); +assert.doesNotThrow(function() { spawn(cmd, a); }); +assert.doesNotThrow(function() { spawn(cmd, a, o); }); +assert.doesNotThrow(function() { spawn(cmd, o); }); + +// Variants of undefined as explicit 'no argument' at a position +assert.doesNotThrow(function() { spawn(cmd, u, o); }); +assert.doesNotThrow(function() { spawn(cmd, a, u); }); + +assert.throws(function() { spawn(cmd, n, o); }, TypeError); +assert.throws(function() { spawn(cmd, a, n); }, TypeError); + +assert.throws(function() { spawn(cmd, s); }, TypeError); +assert.throws(function() { spawn(cmd, a, s); }, TypeError); + + +// verify that execFile has same argument parsing behaviour as spawn +// +// function execFile(file=f [,args=a] [, options=o] [, callback=c]) has valid +// combinations: +// (f) +// (f, a) +// (f, a, o) +// (f, a, o, c) +// (f, a, c) +// (f, o) +// (f, o, c) +// (f, c) +assert.doesNotThrow(function() { execFile(cmd); }); +assert.doesNotThrow(function() { execFile(cmd, a); }); +assert.doesNotThrow(function() { execFile(cmd, a, o); }); +assert.doesNotThrow(function() { execFile(cmd, a, o, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, c); }); +assert.doesNotThrow(function() { execFile(cmd, o); }); +assert.doesNotThrow(function() { execFile(cmd, o, c); }); +assert.doesNotThrow(function() { execFile(cmd, c); }); + +// Variants of undefined as explicit 'no argument' at a position +assert.doesNotThrow(function() { execFile(cmd, u, o, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, u, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, o, u); }); +assert.doesNotThrow(function() { execFile(cmd, n, o, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, n, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, o, n); }); + +// string is invalid in arg position (this may seem strange, but is +// consistent across node API, cf. `net.createServer('not options', 'not +// callback')` +assert.throws(function() { execFile(cmd, s, o, c); }, TypeError); +assert.doesNotThrow(function() { execFile(cmd, a, s, c); }); +assert.doesNotThrow(function() { execFile(cmd, a, o, s); }); + + +// verify that fork has same argument parsing behaviour as spawn +// +// function fork(file=f [,args=a] [, options=o]) has valid combinations: +// (f) +// (f, a) +// (f, a, o) +// (f, o) +assert.doesNotThrow(function() { fork(empty); }); +assert.doesNotThrow(function() { fork(empty, a); }); +assert.doesNotThrow(function() { fork(empty, a, o); }); +assert.doesNotThrow(function() { fork(empty, o); }); + +assert.throws(function() { fork(empty, s); }, TypeError); +assert.doesNotThrow(function() { fork(empty, a, s); }, TypeError); From 4a1b519e8a4a81f51b92d3f901956b7f5fec9033 Mon Sep 17 00:00:00 2001 From: Karl Skomski Date: Fri, 14 Aug 2015 10:07:18 +0200 Subject: [PATCH 08/28] build: add --enable-asan with builtin leakcheck PR-URL: https://github.com/nodejs/node/pull/2376 Reviewed-By: Fedor Indutny Reviewed-By: Ben Noordhuis --- common.gypi | 22 ++++++++++++++++++-- configure | 6 ++++++ src/node.cc | 8 +++++++ test/sequential/test-child-process-emfile.js | 9 +++++++- tools/lsan_suppressions.txt | 4 ++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 tools/lsan_suppressions.txt diff --git a/common.gypi b/common.gypi index 7972c2d60a5a77..7819816bbbd2f5 100644 --- a/common.gypi +++ b/common.gypi @@ -173,16 +173,34 @@ }, 'msvs_disabled_warnings': [4351, 4355, 4800], 'conditions': [ - ['asan != 0', { + ['asan == 1 and OS != "mac"', { 'cflags+': [ '-fno-omit-frame-pointer', '-fsanitize=address', - '-w', # http://crbug.com/162783 + '-DLEAK_SANITIZER' ], 'cflags_cc+': [ '-gline-tables-only' ], 'cflags!': [ '-fomit-frame-pointer' ], 'ldflags': [ '-fsanitize=address' ], }], + ['asan == 1 and OS == "mac"', { + 'xcode_settings': { + 'OTHER_CFLAGS+': [ + '-fno-omit-frame-pointer', + '-gline-tables-only', + '-fsanitize=address', + '-DLEAK_SANITIZER' + ], + 'OTHER_CFLAGS!': [ + '-fomit-frame-pointer', + ], + }, + 'target_conditions': [ + ['_type!="static_library"', { + 'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']}, + }], + ], + }], ['OS == "win"', { 'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin 'defines': [ diff --git a/configure b/configure index 42817c21eb7872..6c8dfde4324363 100755 --- a/configure +++ b/configure @@ -335,6 +335,11 @@ parser.add_option('--xcode', dest='use_xcode', help='generate build files for use with xcode') +parser.add_option('--enable-asan', + action='store_true', + dest='enable_asan', + help='build with asan') + parser.add_option('--enable-static', action='store_true', dest='enable_static', @@ -707,6 +712,7 @@ def configure_node(o): if options.linked_module: o['variables']['library_files'] = options.linked_module + o['variables']['asan'] = int(options.enable_asan or 0) def configure_library(lib, output): shared_lib = 'shared_' + lib diff --git a/src/node.cc b/src/node.cc index 57fb6df24e380a..d62ed283559a3a 100644 --- a/src/node.cc +++ b/src/node.cc @@ -52,6 +52,10 @@ #include #include +#if defined(LEAK_SANITIZER) +#include +#endif + #if defined(_MSC_VER) #include #include @@ -3967,6 +3971,10 @@ static void StartNodeInstance(void* arg) { instance_data->set_exit_code(exit_code); RunAtExit(env); +#if defined(LEAK_SANITIZER) + __lsan_do_leak_check(); +#endif + env->Dispose(); env = nullptr; } diff --git a/test/sequential/test-child-process-emfile.js b/test/sequential/test-child-process-emfile.js index 08a34a05f25734..c4c467c3392482 100644 --- a/test/sequential/test-child-process-emfile.js +++ b/test/sequential/test-child-process-emfile.js @@ -9,9 +9,11 @@ if (common.isWindows) { return; } +var openFds = []; + for (;;) { try { - fs.openSync(__filename, 'r'); + openFds.push(fs.openSync(__filename, 'r')); } catch (err) { assert(err.code === 'EMFILE' || err.code === 'ENFILE'); break; @@ -27,3 +29,8 @@ proc.on('error', common.mustCall(function(err) { // 'exit' should not be emitted, the process was never spawned. proc.on('exit', assert.fail); + +// close one fd for LSan +if (openFds.length >= 1) { + fs.closeSync(openFds.pop()); +} diff --git a/tools/lsan_suppressions.txt b/tools/lsan_suppressions.txt new file mode 100644 index 00000000000000..46887b62ae52ce --- /dev/null +++ b/tools/lsan_suppressions.txt @@ -0,0 +1,4 @@ +# Usage: LSAN_OPTIONS=suppressions=`pwd`/tools/lsan_suppressions.txt make check + +# Suppress small (intentional) leaks in glibc +leak:libc.so From b513a3332163ad89cdb459f5877ee181b40f91c5 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Wed, 2 Sep 2015 12:23:49 -0400 Subject: [PATCH 09/28] events,lib: don't require EE#listenerCount() Now parts of our public and public-ish APIs fall back to old-style listenerCount() if the emitter does not have a listenerCount function. Fixes: https://github.com/nodejs/node/issues/2655 Refs: 8f58fb92fff904a6ca58fd0df9ee5a1816e5b84e PR-URL: https://github.com/nodejs/node/pull/2661 Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- lib/_http_server.js | 4 ++-- lib/_stream_readable.js | 4 ++-- lib/events.js | 9 +++++++-- lib/stream.js | 2 +- .../test-stream-pipe-without-listenerCount.js | 19 +++++++++++++++++++ 5 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 test/parallel/test-stream-pipe-without-listenerCount.js diff --git a/lib/_http_server.js b/lib/_http_server.js index dd787fa2f7ad99..16460fca35705d 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -374,7 +374,7 @@ function connectionListener(socket) { parser = null; var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade'; - if (self.listenerCount(eventName) > 0) { + if (EventEmitter.listenerCount(self, eventName) > 0) { debug('SERVER have listener for %s', eventName); var bodyHead = d.slice(bytesParsed, d.length); @@ -497,7 +497,7 @@ function connectionListener(socket) { (req.httpVersionMajor == 1 && req.httpVersionMinor == 1) && continueExpression.test(req.headers['expect'])) { res._expect_continue = true; - if (self.listenerCount('checkContinue') > 0) { + if (EventEmitter.listenerCount(self, 'checkContinue') > 0) { self.emit('checkContinue', req, res); } else { res.writeContinue(); diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index 681c3eaec245be..c6bd0c16659d1e 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -537,7 +537,7 @@ Readable.prototype.pipe = function(dest, pipeOpts) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); - if (dest.listenerCount('error') === 0) + if (EE.listenerCount(dest, 'error') === 0) dest.emit('error', er); } // This is a brutally ugly hack to make sure that our error handler @@ -586,7 +586,7 @@ function pipeOnDrain(src) { debug('pipeOnDrain', state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && src.listenerCount('data')) { + if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { state.flowing = true; flow(src); } diff --git a/lib/events.js b/lib/events.js index 722b64537e109d..ea3f2831eb3bbc 100644 --- a/lib/events.js +++ b/lib/events.js @@ -395,10 +395,15 @@ EventEmitter.prototype.listeners = function listeners(type) { }; EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } }; -EventEmitter.prototype.listenerCount = function listenerCount(type) { +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { const events = this._events; if (events) { diff --git a/lib/stream.js b/lib/stream.js index 2e0cdfc3134065..8d3535dc4d2f0e 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -70,7 +70,7 @@ Stream.prototype.pipe = function(dest, options) { // don't leave dangling pipes when there are errors. function onerror(er) { cleanup(); - if (this.listenerCount('error') === 0) { + if (EE.listenerCount(this, 'error') === 0) { throw er; // Unhandled stream error in pipe. } } diff --git a/test/parallel/test-stream-pipe-without-listenerCount.js b/test/parallel/test-stream-pipe-without-listenerCount.js new file mode 100644 index 00000000000000..d7a6a6b653a6bf --- /dev/null +++ b/test/parallel/test-stream-pipe-without-listenerCount.js @@ -0,0 +1,19 @@ +'use strict'; +const common = require('../common'); +const stream = require('stream'); + +const r = new stream.Stream(); +r.listenerCount = undefined; + +const w = new stream.Stream(); +w.listenerCount = undefined; + +w.on('pipe', function() { + r.emit('error', new Error('Readable Error')); + w.emit('error', new Error('Writable Error')); +}); +r.on('error', common.mustCall(noop)); +w.on('error', common.mustCall(noop)); +r.pipe(w); + +function noop() {}; From 113418831533c1f5686d1b7fbb0a5d0727a2237f Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Sun, 23 Aug 2015 06:09:40 -0700 Subject: [PATCH 10/28] deps: upgrade V8 to 4.5.103.24 Upgrade to the latest branch-head for V8 4.5. For the full commit log see https://github.com/v8/v8-git-mirror/commits/4.5.103.24 PR-URL: https://github.com/nodejs/node/pull/2509 Reviewed-By: Ben Noordhuis --- deps/v8/.gitignore | 2 + deps/v8/BUILD.gn | 80 +- deps/v8/ChangeLog | 675 +++ deps/v8/DEPS | 12 +- deps/v8/LICENSE | 7 +- deps/v8/Makefile | 21 +- deps/v8/Makefile.android | 65 +- deps/v8/build/android.gypi | 266 - deps/v8/build/features.gypi | 12 +- deps/v8/build/get_landmines.py | 2 + deps/v8/build/gyp_v8 | 11 +- deps/v8/build/standalone.gypi | 612 ++- deps/v8/build/toolchain.gypi | 44 +- deps/v8/include/v8-debug.h | 41 +- deps/v8/include/v8-platform.h | 11 + deps/v8/include/v8-profiler.h | 28 +- deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8.h | 1133 ++-- deps/v8/include/v8config.h | 53 +- deps/v8/infra/OWNERS | 3 + deps/v8/infra/README.md | 1 + .../commit_queue => infra/config}/OWNERS | 0 deps/v8/infra/config/cq.cfg | 52 + deps/v8/infra/project-config/README.md | 1 + .../infra/project-config/cr-buildbucket.cfg | 23 + deps/v8/samples/hello-world.cc | 71 + deps/v8/samples/process.cc | 202 +- deps/v8/samples/samples.gyp | 10 + deps/v8/samples/shell.cc | 155 +- deps/v8/src/accessors.cc | 187 +- deps/v8/src/accessors.h | 5 - deps/v8/src/allocation-site-scopes.cc | 3 +- deps/v8/src/allocation-tracker.cc | 3 +- deps/v8/src/allocation.cc | 3 +- deps/v8/src/api-natives.cc | 106 +- deps/v8/src/api.cc | 1297 +++-- deps/v8/src/api.h | 15 + deps/v8/src/arguments.cc | 80 +- deps/v8/src/arguments.h | 18 +- deps/v8/src/arm/assembler-arm-inl.h | 27 +- deps/v8/src/arm/assembler-arm.cc | 674 +-- deps/v8/src/arm/assembler-arm.h | 139 +- deps/v8/src/arm/builtins-arm.cc | 147 +- deps/v8/src/arm/code-stubs-arm.cc | 229 +- deps/v8/src/arm/codegen-arm.cc | 3 +- deps/v8/src/arm/constants-arm.cc | 3 +- deps/v8/src/arm/constants-arm.h | 5 + deps/v8/src/arm/cpu-arm.cc | 3 +- deps/v8/src/arm/debug-arm.cc | 52 +- deps/v8/src/arm/deoptimizer-arm.cc | 5 +- deps/v8/src/arm/disasm-arm.cc | 4 +- deps/v8/src/arm/frames-arm.cc | 14 +- deps/v8/src/arm/frames-arm.h | 54 +- deps/v8/src/arm/full-codegen-arm.cc | 911 +-- deps/v8/src/arm/interface-descriptors-arm.cc | 308 +- deps/v8/src/arm/lithium-arm.cc | 79 +- deps/v8/src/arm/lithium-arm.h | 83 +- deps/v8/src/arm/lithium-codegen-arm.cc | 338 +- deps/v8/src/arm/lithium-codegen-arm.h | 6 +- deps/v8/src/arm/lithium-gap-resolver-arm.cc | 3 +- deps/v8/src/arm/macro-assembler-arm.cc | 76 +- deps/v8/src/arm/macro-assembler-arm.h | 10 +- deps/v8/src/arm/regexp-macro-assembler-arm.cc | 3 +- deps/v8/src/arm/simulator-arm.cc | 29 +- deps/v8/src/arm/simulator-arm.h | 2 + deps/v8/src/arm64/assembler-arm64-inl.h | 25 +- deps/v8/src/arm64/assembler-arm64.cc | 101 +- deps/v8/src/arm64/assembler-arm64.h | 40 +- deps/v8/src/arm64/builtins-arm64.cc | 119 +- deps/v8/src/arm64/code-stubs-arm64.cc | 238 +- deps/v8/src/arm64/code-stubs-arm64.h | 6 +- deps/v8/src/arm64/codegen-arm64.cc | 3 +- deps/v8/src/arm64/constants-arm64.h | 2 + deps/v8/src/arm64/cpu-arm64.cc | 3 +- deps/v8/src/arm64/debug-arm64.cc | 50 +- deps/v8/src/arm64/decoder-arm64.cc | 3 +- deps/v8/src/arm64/delayed-masm-arm64.cc | 3 +- deps/v8/src/arm64/deoptimizer-arm64.cc | 5 +- deps/v8/src/arm64/disasm-arm64.cc | 24 +- deps/v8/src/arm64/frames-arm64.cc | 9 +- deps/v8/src/arm64/frames-arm64.h | 30 - deps/v8/src/arm64/full-codegen-arm64.cc | 887 +-- deps/v8/src/arm64/instructions-arm64.cc | 30 +- deps/v8/src/arm64/instructions-arm64.h | 14 +- deps/v8/src/arm64/instrument-arm64.cc | 3 +- .../src/arm64/interface-descriptors-arm64.cc | 323 +- deps/v8/src/arm64/lithium-arm64.cc | 80 +- deps/v8/src/arm64/lithium-arm64.h | 83 +- deps/v8/src/arm64/lithium-codegen-arm64.cc | 335 +- deps/v8/src/arm64/lithium-codegen-arm64.h | 22 +- .../src/arm64/lithium-gap-resolver-arm64.cc | 3 +- deps/v8/src/arm64/macro-assembler-arm64.cc | 24 +- deps/v8/src/arm64/macro-assembler-arm64.h | 4 +- .../src/arm64/regexp-macro-assembler-arm64.cc | 3 +- .../src/arm64/regexp-macro-assembler-arm64.h | 1 + deps/v8/src/arm64/simulator-arm64.cc | 175 +- deps/v8/src/arm64/simulator-arm64.h | 19 +- deps/v8/src/arm64/utils-arm64.cc | 5 +- deps/v8/src/arm64/utils-arm64.h | 43 + deps/v8/src/array-iterator.js | 20 +- deps/v8/src/array.js | 283 +- deps/v8/src/arraybuffer.js | 29 +- deps/v8/src/assembler.cc | 227 +- deps/v8/src/assembler.h | 176 +- deps/v8/src/ast-literal-reindexer.cc | 311 ++ deps/v8/src/ast-literal-reindexer.h | 46 + deps/v8/src/ast-numbering.cc | 70 +- deps/v8/src/ast-value-factory.cc | 18 +- deps/v8/src/ast-value-factory.h | 28 +- deps/v8/src/ast.cc | 252 +- deps/v8/src/ast.h | 509 +- deps/v8/src/background-parsing-task.cc | 4 +- deps/v8/src/bailout-reason.cc | 4 +- deps/v8/src/bailout-reason.h | 2 + .../v8/src/base/atomicops_internals_arm_gcc.h | 6 +- deps/v8/src/base/bits.h | 24 + deps/v8/src/base/macros.h | 9 +- deps/v8/src/base/safe_math_impl.h | 4 +- deps/v8/src/base/sys-info.cc | 2 +- deps/v8/src/basic-block-profiler.h | 3 - deps/v8/src/bignum-dtoa.cc | 3 +- deps/v8/src/bignum.cc | 3 +- deps/v8/src/bootstrapper.cc | 498 +- deps/v8/src/bootstrapper.h | 2 +- deps/v8/src/builtins.cc | 144 +- deps/v8/src/builtins.h | 154 +- deps/v8/src/cached-powers.cc | 3 +- deps/v8/src/char-predicates.cc | 4 +- deps/v8/src/code-factory.cc | 89 +- deps/v8/src/code-factory.h | 20 +- deps/v8/src/code-stubs-hydrogen.cc | 246 +- deps/v8/src/code-stubs.cc | 132 +- deps/v8/src/code-stubs.h | 435 +- deps/v8/src/codegen.cc | 17 +- deps/v8/src/codegen.h | 5 - deps/v8/src/collection-iterator.js | 31 +- deps/v8/src/collection.js | 146 +- deps/v8/src/compilation-cache.cc | 32 +- deps/v8/src/compilation-cache.h | 10 +- deps/v8/src/compilation-dependencies.cc | 4 +- deps/v8/src/compiler.cc | 263 +- deps/v8/src/compiler.h | 71 +- deps/v8/src/compiler/access-builder.cc | 80 +- deps/v8/src/compiler/access-builder.h | 44 +- .../v8/src/compiler/arm/code-generator-arm.cc | 92 +- .../src/compiler/arm/instruction-codes-arm.h | 1 + .../compiler/arm/instruction-selector-arm.cc | 61 +- deps/v8/src/compiler/arm/linkage-arm.cc | 6 + .../compiler/arm64/code-generator-arm64.cc | 116 +- .../compiler/arm64/instruction-codes-arm64.h | 1 + .../arm64/instruction-selector-arm64.cc | 539 +- deps/v8/src/compiler/arm64/linkage-arm64.cc | 12 +- deps/v8/src/compiler/ast-graph-builder.cc | 1823 ++++-- deps/v8/src/compiler/ast-graph-builder.h | 133 +- .../compiler/ast-loop-assignment-analyzer.cc | 9 +- deps/v8/src/compiler/change-lowering.cc | 32 +- deps/v8/src/compiler/coalesced-live-ranges.cc | 148 + deps/v8/src/compiler/coalesced-live-ranges.h | 109 + deps/v8/src/compiler/code-generator-impl.h | 8 + deps/v8/src/compiler/code-generator.cc | 148 +- deps/v8/src/compiler/code-generator.h | 4 + .../src/compiler/common-operator-reducer.cc | 308 +- .../v8/src/compiler/common-operator-reducer.h | 23 +- deps/v8/src/compiler/common-operator.cc | 115 +- deps/v8/src/compiler/common-operator.h | 39 +- deps/v8/src/compiler/control-builders.cc | 13 +- deps/v8/src/compiler/control-builders.h | 3 + .../v8/src/compiler/control-flow-optimizer.cc | 27 +- deps/v8/src/compiler/control-flow-optimizer.h | 15 +- deps/v8/src/compiler/control-reducer.cc | 603 -- deps/v8/src/compiler/control-reducer.h | 43 - deps/v8/src/compiler/dead-code-elimination.cc | 145 + deps/v8/src/compiler/dead-code-elimination.h | 52 + deps/v8/src/compiler/frame-elider.cc | 4 +- deps/v8/src/compiler/frame-states.cc | 40 +- deps/v8/src/compiler/frame-states.h | 83 +- deps/v8/src/compiler/gap-resolver.cc | 6 +- deps/v8/src/compiler/graph-reducer.cc | 63 +- deps/v8/src/compiler/graph-reducer.h | 46 +- deps/v8/src/compiler/graph-trimmer.cc | 48 + deps/v8/src/compiler/graph-trimmer.h | 57 + deps/v8/src/compiler/graph-visualizer.cc | 12 +- deps/v8/src/compiler/graph.cc | 16 +- deps/v8/src/compiler/graph.h | 16 +- deps/v8/src/compiler/greedy-allocator.cc | 350 ++ deps/v8/src/compiler/greedy-allocator.h | 111 + .../src/compiler/ia32/code-generator-ia32.cc | 64 +- .../compiler/ia32/instruction-codes-ia32.h | 1 + .../ia32/instruction-selector-ia32.cc | 104 +- deps/v8/src/compiler/ia32/linkage-ia32.cc | 2 + deps/v8/src/compiler/instruction-codes.h | 55 +- deps/v8/src/compiler/instruction-selector.cc | 86 +- deps/v8/src/compiler/instruction.cc | 31 +- deps/v8/src/compiler/instruction.h | 29 +- deps/v8/src/compiler/js-builtin-reducer.cc | 38 +- deps/v8/src/compiler/js-builtin-reducer.h | 4 +- .../src/compiler/js-context-specialization.cc | 78 +- .../src/compiler/js-context-specialization.h | 36 +- .../src/compiler/js-frame-specialization.cc | 69 + .../v8/src/compiler/js-frame-specialization.h | 44 + deps/v8/src/compiler/js-generic-lowering.cc | 492 +- deps/v8/src/compiler/js-generic-lowering.h | 3 - deps/v8/src/compiler/js-graph.cc | 15 +- deps/v8/src/compiler/js-graph.h | 7 +- deps/v8/src/compiler/js-inlining.cc | 276 +- deps/v8/src/compiler/js-inlining.h | 18 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 260 +- deps/v8/src/compiler/js-intrinsic-lowering.h | 24 +- deps/v8/src/compiler/js-operator.cc | 262 +- deps/v8/src/compiler/js-operator.h | 231 +- deps/v8/src/compiler/js-type-feedback.cc | 161 +- deps/v8/src/compiler/js-type-feedback.h | 47 +- deps/v8/src/compiler/js-typed-lowering.cc | 808 ++- deps/v8/src/compiler/js-typed-lowering.h | 21 +- deps/v8/src/compiler/linkage-impl.h | 44 +- deps/v8/src/compiler/linkage.cc | 98 +- deps/v8/src/compiler/linkage.h | 25 +- deps/v8/src/compiler/load-elimination.cc | 4 +- deps/v8/src/compiler/load-elimination.h | 4 +- deps/v8/src/compiler/loop-analysis.h | 3 +- .../src/compiler/machine-operator-reducer.cc | 9 +- deps/v8/src/compiler/machine-operator.cc | 86 +- deps/v8/src/compiler/machine-operator.h | 63 +- deps/v8/src/compiler/machine-type.h | 38 +- .../src/compiler/mips/code-generator-mips.cc | 115 +- .../compiler/mips/instruction-codes-mips.h | 4 + .../mips/instruction-selector-mips.cc | 75 +- deps/v8/src/compiler/mips/linkage-mips.cc | 5 + .../compiler/mips64/code-generator-mips64.cc | 155 +- .../mips64/instruction-codes-mips64.h | 4 + .../mips64/instruction-selector-mips64.cc | 90 +- deps/v8/src/compiler/mips64/linkage-mips64.cc | 5 + deps/v8/src/compiler/move-optimizer.cc | 2 +- deps/v8/src/compiler/node-marker.cc | 27 - deps/v8/src/compiler/node-marker.h | 36 +- deps/v8/src/compiler/node-matchers.h | 5 +- deps/v8/src/compiler/node-properties.cc | 50 +- deps/v8/src/compiler/node-properties.h | 10 +- deps/v8/src/compiler/node.cc | 305 +- deps/v8/src/compiler/node.h | 283 +- deps/v8/src/compiler/opcodes.cc | 6 + deps/v8/src/compiler/opcodes.h | 24 +- deps/v8/src/compiler/operator-properties.cc | 34 +- deps/v8/src/compiler/osr.cc | 101 +- deps/v8/src/compiler/pipeline.cc | 253 +- .../v8/src/compiler/ppc/code-generator-ppc.cc | 76 +- .../src/compiler/ppc/instruction-codes-ppc.h | 2 + .../compiler/ppc/instruction-selector-ppc.cc | 113 +- deps/v8/src/compiler/ppc/linkage-ppc.cc | 2 + deps/v8/src/compiler/raw-machine-assembler.cc | 79 +- deps/v8/src/compiler/raw-machine-assembler.h | 57 +- deps/v8/src/compiler/register-allocator.cc | 601 +- deps/v8/src/compiler/register-allocator.h | 72 +- .../v8/src/compiler/register-configuration.cc | 7 +- deps/v8/src/compiler/representation-change.h | 6 +- deps/v8/src/compiler/schedule.cc | 6 +- deps/v8/src/compiler/scheduler.cc | 4 +- deps/v8/src/compiler/simplified-lowering.cc | 86 +- deps/v8/src/compiler/simplified-lowering.h | 6 +- .../compiler/simplified-operator-reducer.cc | 61 +- .../compiler/simplified-operator-reducer.h | 9 +- deps/v8/src/compiler/simplified-operator.cc | 56 +- deps/v8/src/compiler/simplified-operator.h | 4 +- deps/v8/src/compiler/source-position.cc | 7 +- deps/v8/src/compiler/source-position.h | 10 +- deps/v8/src/compiler/typer.cc | 557 +- deps/v8/src/compiler/typer.h | 56 +- deps/v8/src/compiler/verifier.cc | 118 +- .../v8/src/compiler/x64/code-generator-x64.cc | 108 +- .../src/compiler/x64/instruction-codes-x64.h | 1 + .../compiler/x64/instruction-selector-x64.cc | 210 +- deps/v8/src/compiler/x64/linkage-x64.cc | 11 + deps/v8/src/compiler/x87/OWNERS | 2 + .../v8/src/compiler/x87/code-generator-x87.cc | 1852 +++++++ .../src/compiler/x87/instruction-codes-x87.h | 122 + .../compiler/x87/instruction-selector-x87.cc | 1355 +++++ deps/v8/src/compiler/x87/linkage-x87.cc | 65 + deps/v8/src/contexts.cc | 87 +- deps/v8/src/contexts.h | 52 +- deps/v8/src/conversions.cc | 3 +- deps/v8/src/counters.cc | 3 +- deps/v8/src/cpu-profiler.cc | 3 +- deps/v8/src/d8-debug.cc | 4 +- deps/v8/src/d8.cc | 742 ++- deps/v8/src/d8.gyp | 7 +- deps/v8/src/d8.h | 149 +- deps/v8/src/date.cc | 3 +- deps/v8/src/date.js | 112 +- deps/v8/src/dateparser.cc | 3 +- deps/v8/src/debug.cc | 611 +-- deps/v8/src/debug.h | 61 +- deps/v8/src/deoptimizer.cc | 3276 +++++------ deps/v8/src/deoptimizer.h | 596 +- deps/v8/src/disassembler.cc | 7 +- deps/v8/src/diy-fp.cc | 3 +- deps/v8/src/dtoa.cc | 3 +- deps/v8/src/elements-kind.cc | 31 +- deps/v8/src/elements-kind.h | 24 +- deps/v8/src/elements.cc | 1702 +++--- deps/v8/src/elements.h | 152 +- deps/v8/src/execution.cc | 34 +- deps/v8/src/execution.h | 3 - deps/v8/src/expression-classifier.h | 255 + .../externalize-string-extension.cc | 49 +- .../extensions/externalize-string-extension.h | 5 +- .../src/extensions/free-buffer-extension.cc | 10 +- .../v8/src/extensions/free-buffer-extension.h | 5 +- deps/v8/src/extensions/gc-extension.cc | 15 +- deps/v8/src/extensions/gc-extension.h | 5 +- .../v8/src/extensions/statistics-extension.cc | 31 +- deps/v8/src/extensions/statistics-extension.h | 5 +- .../extensions/trigger-failure-extension.cc | 10 +- .../extensions/trigger-failure-extension.h | 5 +- deps/v8/src/factory.cc | 313 +- deps/v8/src/factory.h | 93 +- deps/v8/src/fast-dtoa.cc | 3 +- deps/v8/src/fixed-dtoa.cc | 3 +- deps/v8/src/flag-definitions.h | 69 +- deps/v8/src/flags.cc | 3 +- deps/v8/src/frames.cc | 293 +- deps/v8/src/frames.h | 93 +- deps/v8/src/full-codegen.cc | 517 +- deps/v8/src/full-codegen.h | 123 +- deps/v8/src/func-name-inferrer.cc | 3 +- deps/v8/src/generator.js | 31 +- deps/v8/src/global-handles.cc | 10 +- deps/v8/src/globals.h | 153 +- deps/v8/src/handles-inl.h | 14 +- deps/v8/src/handles.cc | 4 +- deps/v8/src/handles.h | 30 +- deps/v8/src/harmony-array-includes.js | 4 +- deps/v8/src/harmony-array.js | 179 +- deps/v8/src/harmony-atomics.js | 143 + deps/v8/src/harmony-concat-spreadable.js | 16 + deps/v8/src/harmony-object.js | 17 +- deps/v8/src/harmony-reflect.js | 4 +- deps/v8/src/harmony-regexp.js | 2 +- deps/v8/src/harmony-sharedarraybuffer.js | 56 + deps/v8/src/harmony-spread.js | 8 +- deps/v8/src/harmony-tostring.js | 4 +- deps/v8/src/harmony-typedarray.js | 389 +- deps/v8/src/hashmap.h | 8 +- deps/v8/src/heap-profiler.cc | 3 +- deps/v8/src/heap-snapshot-generator.cc | 40 +- deps/v8/src/heap-snapshot-generator.h | 3 +- deps/v8/src/heap/gc-idle-time-handler.cc | 201 +- deps/v8/src/heap/gc-idle-time-handler.h | 87 +- deps/v8/src/heap/gc-tracer.cc | 229 +- deps/v8/src/heap/gc-tracer.h | 81 +- deps/v8/src/heap/heap-inl.h | 34 +- deps/v8/src/heap/heap.cc | 1172 ++-- deps/v8/src/heap/heap.h | 316 +- deps/v8/src/heap/identity-map.cc | 6 +- deps/v8/src/heap/incremental-marking.cc | 55 +- deps/v8/src/heap/incremental-marking.h | 25 +- deps/v8/src/heap/mark-compact.cc | 969 ++-- deps/v8/src/heap/mark-compact.h | 101 +- deps/v8/src/heap/memory-reducer.cc | 241 + deps/v8/src/heap/memory-reducer.h | 170 + deps/v8/src/heap/objects-visiting-inl.h | 108 +- deps/v8/src/heap/objects-visiting.cc | 16 +- deps/v8/src/heap/objects-visiting.h | 2 - deps/v8/src/heap/spaces-inl.h | 95 +- deps/v8/src/heap/spaces.cc | 53 +- deps/v8/src/heap/spaces.h | 104 +- deps/v8/src/heap/store-buffer.cc | 63 +- deps/v8/src/hydrogen-bce.cc | 11 +- deps/v8/src/hydrogen-bch.cc | 3 +- deps/v8/src/hydrogen-canonicalize.cc | 3 +- deps/v8/src/hydrogen-check-elimination.cc | 3 +- deps/v8/src/hydrogen-dce.cc | 3 +- deps/v8/src/hydrogen-dehoist.cc | 3 +- deps/v8/src/hydrogen-environment-liveness.cc | 3 +- deps/v8/src/hydrogen-escape-analysis.cc | 3 +- deps/v8/src/hydrogen-gvn.cc | 3 +- deps/v8/src/hydrogen-infer-representation.cc | 3 +- deps/v8/src/hydrogen-infer-types.cc | 3 +- deps/v8/src/hydrogen-instructions.cc | 112 +- deps/v8/src/hydrogen-instructions.h | 393 +- deps/v8/src/hydrogen-load-elimination.cc | 3 +- deps/v8/src/hydrogen-mark-deoptimize.cc | 3 +- deps/v8/src/hydrogen-mark-unreachable.cc | 3 +- deps/v8/src/hydrogen-osr.cc | 3 +- deps/v8/src/hydrogen-range-analysis.cc | 3 +- deps/v8/src/hydrogen-redundant-phi.cc | 3 +- deps/v8/src/hydrogen-removable-simulates.cc | 3 +- .../v8/src/hydrogen-representation-changes.cc | 3 +- deps/v8/src/hydrogen-sce.cc | 3 +- deps/v8/src/hydrogen-store-elimination.cc | 3 +- deps/v8/src/hydrogen-types.cc | 3 +- deps/v8/src/hydrogen-uint32-analysis.cc | 3 +- deps/v8/src/hydrogen.cc | 485 +- deps/v8/src/hydrogen.h | 32 +- deps/v8/src/i18n.cc | 5 +- deps/v8/src/i18n.js | 611 ++- deps/v8/src/ia32/assembler-ia32-inl.h | 12 +- deps/v8/src/ia32/assembler-ia32.cc | 23 +- deps/v8/src/ia32/assembler-ia32.h | 32 +- deps/v8/src/ia32/builtins-ia32.cc | 99 +- deps/v8/src/ia32/code-stubs-ia32.cc | 236 +- deps/v8/src/ia32/codegen-ia32.cc | 3 +- deps/v8/src/ia32/cpu-ia32.cc | 3 +- deps/v8/src/ia32/debug-ia32.cc | 52 +- deps/v8/src/ia32/deoptimizer-ia32.cc | 5 +- deps/v8/src/ia32/disasm-ia32.cc | 2 +- deps/v8/src/ia32/frames-ia32.cc | 9 +- deps/v8/src/ia32/frames-ia32.h | 30 - deps/v8/src/ia32/full-codegen-ia32.cc | 895 +-- .../v8/src/ia32/interface-descriptors-ia32.cc | 294 +- deps/v8/src/ia32/lithium-codegen-ia32.cc | 268 +- deps/v8/src/ia32/lithium-codegen-ia32.h | 6 +- deps/v8/src/ia32/lithium-gap-resolver-ia32.cc | 3 +- deps/v8/src/ia32/lithium-ia32.cc | 77 +- deps/v8/src/ia32/lithium-ia32.h | 81 +- deps/v8/src/ia32/macro-assembler-ia32.cc | 6 +- .../src/ia32/regexp-macro-assembler-ia32.cc | 3 +- deps/v8/src/ic/access-compiler.cc | 4 +- deps/v8/src/ic/access-compiler.h | 10 +- deps/v8/src/ic/arm/access-compiler-arm.cc | 4 +- deps/v8/src/ic/arm/handler-compiler-arm.cc | 4 +- deps/v8/src/ic/arm/ic-arm.cc | 222 +- deps/v8/src/ic/arm/ic-compiler-arm.cc | 4 +- deps/v8/src/ic/arm/stub-cache-arm.cc | 8 +- deps/v8/src/ic/arm64/access-compiler-arm64.cc | 4 +- .../v8/src/ic/arm64/handler-compiler-arm64.cc | 4 +- deps/v8/src/ic/arm64/ic-arm64.cc | 263 +- deps/v8/src/ic/arm64/ic-compiler-arm64.cc | 4 +- deps/v8/src/ic/arm64/stub-cache-arm64.cc | 8 +- deps/v8/src/ic/call-optimization.cc | 4 +- deps/v8/src/ic/handler-compiler.cc | 37 +- deps/v8/src/ic/handler-compiler.h | 3 +- deps/v8/src/ic/ia32/access-compiler-ia32.cc | 4 +- deps/v8/src/ic/ia32/handler-compiler-ia32.cc | 11 +- deps/v8/src/ic/ia32/ic-compiler-ia32.cc | 4 +- deps/v8/src/ic/ia32/ic-ia32.cc | 224 +- deps/v8/src/ic/ia32/stub-cache-ia32.cc | 12 +- deps/v8/src/ic/ic-compiler.cc | 100 +- deps/v8/src/ic/ic-compiler.h | 10 +- deps/v8/src/ic/ic-inl.h | 61 +- deps/v8/src/ic/ic-state.cc | 30 +- deps/v8/src/ic/ic-state.h | 68 +- deps/v8/src/ic/ic.cc | 787 +-- deps/v8/src/ic/ic.h | 158 +- deps/v8/src/ic/mips/access-compiler-mips.cc | 4 +- deps/v8/src/ic/mips/handler-compiler-mips.cc | 4 +- deps/v8/src/ic/mips/ic-compiler-mips.cc | 4 +- deps/v8/src/ic/mips/ic-mips.cc | 222 +- deps/v8/src/ic/mips/stub-cache-mips.cc | 8 +- .../src/ic/mips64/access-compiler-mips64.cc | 4 +- .../src/ic/mips64/handler-compiler-mips64.cc | 4 +- deps/v8/src/ic/mips64/ic-compiler-mips64.cc | 4 +- deps/v8/src/ic/mips64/ic-mips64.cc | 221 +- deps/v8/src/ic/mips64/stub-cache-mips64.cc | 14 +- deps/v8/src/ic/ppc/access-compiler-ppc.cc | 4 +- deps/v8/src/ic/ppc/handler-compiler-ppc.cc | 10 +- deps/v8/src/ic/ppc/ic-compiler-ppc.cc | 4 +- deps/v8/src/ic/ppc/ic-ppc.cc | 228 +- deps/v8/src/ic/ppc/stub-cache-ppc.cc | 8 +- deps/v8/src/ic/stub-cache.cc | 4 +- deps/v8/src/ic/x64/access-compiler-x64.cc | 4 +- deps/v8/src/ic/x64/handler-compiler-x64.cc | 4 +- deps/v8/src/ic/x64/ic-compiler-x64.cc | 4 +- deps/v8/src/ic/x64/ic-x64.cc | 226 +- deps/v8/src/ic/x64/stub-cache-x64.cc | 8 +- deps/v8/src/ic/x87/access-compiler-x87.cc | 4 +- deps/v8/src/ic/x87/handler-compiler-x87.cc | 11 +- deps/v8/src/ic/x87/ic-compiler-x87.cc | 4 +- deps/v8/src/ic/x87/ic-x87.cc | 224 +- deps/v8/src/ic/x87/stub-cache-x87.cc | 13 +- deps/v8/src/icu_util.cc | 3 +- deps/v8/src/interface-descriptors.cc | 363 +- deps/v8/src/interface-descriptors.h | 210 +- deps/v8/src/interpreter-irregexp.cc | 3 +- deps/v8/src/isolate.cc | 174 +- deps/v8/src/isolate.h | 46 +- deps/v8/src/iterator-prototype.js | 21 + deps/v8/src/json-parser.h | 35 +- deps/v8/src/json-stringifier.h | 13 +- deps/v8/src/json.js | 80 +- deps/v8/src/jsregexp.cc | 402 +- deps/v8/src/jsregexp.h | 68 +- deps/v8/src/layout-descriptor-inl.h | 4 +- deps/v8/src/layout-descriptor.cc | 4 +- deps/v8/src/libplatform/default-platform.cc | 67 +- deps/v8/src/libplatform/default-platform.h | 12 + deps/v8/src/list-inl.h | 42 +- deps/v8/src/list.h | 10 +- deps/v8/src/lithium-allocator.cc | 3 +- deps/v8/src/lithium-codegen.cc | 103 +- deps/v8/src/lithium-codegen.h | 6 + deps/v8/src/lithium.cc | 21 +- deps/v8/src/lithium.h | 22 +- deps/v8/src/liveedit.cc | 45 +- deps/v8/src/liveedit.h | 2 +- deps/v8/src/log-utils.cc | 3 +- deps/v8/src/log-utils.h | 2 +- deps/v8/src/log.cc | 89 +- deps/v8/src/log.h | 10 - deps/v8/src/lookup-inl.h | 62 +- deps/v8/src/lookup.cc | 183 +- deps/v8/src/lookup.h | 128 +- deps/v8/src/macro-assembler.h | 24 +- deps/v8/src/macros.py | 18 +- deps/v8/src/math.js | 69 +- deps/v8/src/messages.cc | 147 +- deps/v8/src/messages.h | 237 +- deps/v8/src/messages.js | 300 +- deps/v8/src/mips/assembler-mips.cc | 381 +- deps/v8/src/mips/assembler-mips.h | 79 +- deps/v8/src/mips/builtins-mips.cc | 135 +- deps/v8/src/mips/code-stubs-mips.cc | 202 +- deps/v8/src/mips/codegen-mips.cc | 3 +- deps/v8/src/mips/constants-mips.cc | 35 +- deps/v8/src/mips/constants-mips.h | 202 +- deps/v8/src/mips/cpu-mips.cc | 3 +- deps/v8/src/mips/debug-mips.cc | 49 +- deps/v8/src/mips/deoptimizer-mips.cc | 5 +- deps/v8/src/mips/disasm-mips.cc | 532 +- deps/v8/src/mips/frames-mips.cc | 9 +- deps/v8/src/mips/frames-mips.h | 30 - deps/v8/src/mips/full-codegen-mips.cc | 879 +-- .../v8/src/mips/interface-descriptors-mips.cc | 295 +- deps/v8/src/mips/lithium-codegen-mips.cc | 302 +- deps/v8/src/mips/lithium-codegen-mips.h | 6 +- deps/v8/src/mips/lithium-gap-resolver-mips.cc | 3 +- deps/v8/src/mips/lithium-mips.cc | 79 +- deps/v8/src/mips/lithium-mips.h | 83 +- deps/v8/src/mips/macro-assembler-mips.cc | 24 +- .../src/mips/regexp-macro-assembler-mips.cc | 3 +- deps/v8/src/mips/simulator-mips.cc | 1203 +++- deps/v8/src/mips/simulator-mips.h | 30 +- deps/v8/src/mips64/assembler-mips64-inl.h | 49 +- deps/v8/src/mips64/assembler-mips64.cc | 489 +- deps/v8/src/mips64/assembler-mips64.h | 100 +- deps/v8/src/mips64/builtins-mips64.cc | 136 +- deps/v8/src/mips64/code-stubs-mips64.cc | 204 +- deps/v8/src/mips64/codegen-mips64.cc | 3 +- deps/v8/src/mips64/constants-mips64.cc | 53 +- deps/v8/src/mips64/constants-mips64.h | 243 +- deps/v8/src/mips64/cpu-mips64.cc | 3 +- deps/v8/src/mips64/debug-mips64.cc | 48 +- deps/v8/src/mips64/deoptimizer-mips64.cc | 5 +- deps/v8/src/mips64/disasm-mips64.cc | 572 +- deps/v8/src/mips64/frames-mips64.cc | 9 +- deps/v8/src/mips64/frames-mips64.h | 30 - deps/v8/src/mips64/full-codegen-mips64.cc | 888 +-- .../mips64/interface-descriptors-mips64.cc | 295 +- deps/v8/src/mips64/lithium-codegen-mips64.cc | 557 +- deps/v8/src/mips64/lithium-codegen-mips64.h | 9 +- .../src/mips64/lithium-gap-resolver-mips64.cc | 3 +- deps/v8/src/mips64/lithium-mips64.cc | 112 +- deps/v8/src/mips64/lithium-mips64.h | 147 +- deps/v8/src/mips64/macro-assembler-mips64.cc | 270 +- deps/v8/src/mips64/macro-assembler-mips64.h | 20 +- .../mips64/regexp-macro-assembler-mips64.cc | 3 +- deps/v8/src/mips64/simulator-mips64.cc | 1319 ++++- deps/v8/src/mips64/simulator-mips64.h | 94 +- deps/v8/src/mirror-debugger.js | 55 +- deps/v8/src/modules.cc | 4 +- deps/v8/src/object-observe.js | 49 +- deps/v8/src/objects-debug.cc | 43 +- deps/v8/src/objects-inl.h | 1115 ++-- deps/v8/src/objects-printer.cc | 72 +- deps/v8/src/objects.cc | 4868 +++++++---------- deps/v8/src/objects.h | 1444 ++--- deps/v8/src/optimizing-compile-dispatcher.cc | 4 +- deps/v8/src/parser.cc | 1443 ++--- deps/v8/src/parser.h | 267 +- deps/v8/src/pattern-rewriter.cc | 423 ++ .../src/pending-compilation-error-handler.cc | 29 +- .../src/pending-compilation-error-handler.h | 13 +- deps/v8/src/perf-jit.cc | 148 - deps/v8/src/perf-jit.h | 113 - deps/v8/src/ppc/assembler-ppc-inl.h | 185 +- deps/v8/src/ppc/assembler-ppc.cc | 179 +- deps/v8/src/ppc/assembler-ppc.h | 177 +- deps/v8/src/ppc/builtins-ppc.cc | 174 +- deps/v8/src/ppc/code-stubs-ppc.cc | 262 +- deps/v8/src/ppc/codegen-ppc.cc | 4 +- deps/v8/src/ppc/constants-ppc.cc | 4 +- deps/v8/src/ppc/constants-ppc.h | 8 +- deps/v8/src/ppc/cpu-ppc.cc | 4 +- deps/v8/src/ppc/debug-ppc.cc | 53 +- deps/v8/src/ppc/deoptimizer-ppc.cc | 8 +- deps/v8/src/ppc/disasm-ppc.cc | 4 +- deps/v8/src/ppc/frames-ppc.cc | 18 +- deps/v8/src/ppc/frames-ppc.h | 37 +- deps/v8/src/ppc/full-codegen-ppc.cc | 934 ++-- deps/v8/src/ppc/interface-descriptors-ppc.cc | 296 +- deps/v8/src/ppc/lithium-codegen-ppc.cc | 311 +- deps/v8/src/ppc/lithium-codegen-ppc.h | 8 +- deps/v8/src/ppc/lithium-gap-resolver-ppc.cc | 4 +- deps/v8/src/ppc/lithium-ppc.cc | 80 +- deps/v8/src/ppc/lithium-ppc.h | 81 +- deps/v8/src/ppc/macro-assembler-ppc.cc | 159 +- deps/v8/src/ppc/macro-assembler-ppc.h | 32 +- deps/v8/src/ppc/regexp-macro-assembler-ppc.cc | 4 +- deps/v8/src/ppc/simulator-ppc.cc | 42 +- deps/v8/src/ppc/simulator-ppc.h | 3 + deps/v8/src/preparse-data-format.h | 5 +- deps/v8/src/preparse-data.cc | 10 +- deps/v8/src/preparse-data.h | 43 +- deps/v8/src/preparser.cc | 135 +- deps/v8/src/preparser.h | 1227 +++-- deps/v8/src/prettyprinter.cc | 130 +- deps/v8/src/prettyprinter.h | 1 + deps/v8/src/profile-generator.cc | 3 +- deps/v8/src/prologue.js | 232 + deps/v8/src/promise.js | 15 +- deps/v8/src/property.cc | 3 +- deps/v8/src/proxy.js | 32 +- .../v8/src/regexp-macro-assembler-irregexp.cc | 3 +- deps/v8/src/regexp-macro-assembler-tracer.cc | 9 +- deps/v8/src/regexp-macro-assembler-tracer.h | 1 + deps/v8/src/regexp-macro-assembler.cc | 3 +- deps/v8/src/regexp-macro-assembler.h | 3 + deps/v8/src/regexp-stack.cc | 3 +- deps/v8/src/regexp.js | 86 +- deps/v8/src/rewriter.cc | 5 +- deps/v8/src/runtime-profiler.cc | 9 +- deps/v8/src/runtime.js | 110 +- deps/v8/src/runtime/runtime-array.cc | 165 +- deps/v8/src/runtime/runtime-atomics.cc | 824 +++ deps/v8/src/runtime/runtime-classes.cc | 120 +- deps/v8/src/runtime/runtime-collections.cc | 100 +- deps/v8/src/runtime/runtime-compiler.cc | 64 +- deps/v8/src/runtime/runtime-date.cc | 30 +- deps/v8/src/runtime/runtime-debug.cc | 494 +- deps/v8/src/runtime/runtime-forin.cc | 75 + deps/v8/src/runtime/runtime-function.cc | 70 +- deps/v8/src/runtime/runtime-generator.cc | 6 +- deps/v8/src/runtime/runtime-i18n.cc | 23 +- deps/v8/src/runtime/runtime-internal.cc | 65 +- deps/v8/src/runtime/runtime-json.cc | 4 +- deps/v8/src/runtime/runtime-literals.cc | 62 +- deps/v8/src/runtime/runtime-liveedit.cc | 4 +- deps/v8/src/runtime/runtime-maths.cc | 4 +- deps/v8/src/runtime/runtime-numbers.cc | 4 +- deps/v8/src/runtime/runtime-object.cc | 626 +-- deps/v8/src/runtime/runtime-observe.cc | 6 +- deps/v8/src/runtime/runtime-proxy.cc | 4 +- deps/v8/src/runtime/runtime-regexp.cc | 17 +- deps/v8/src/runtime/runtime-scopes.cc | 76 +- deps/v8/src/runtime/runtime-strings.cc | 20 +- deps/v8/src/runtime/runtime-symbol.cc | 36 +- deps/v8/src/runtime/runtime-test.cc | 38 +- deps/v8/src/runtime/runtime-typedarray.cc | 72 +- deps/v8/src/runtime/runtime-uri.cc | 4 +- deps/v8/src/runtime/runtime-utils.h | 12 + deps/v8/src/runtime/runtime.h | 211 +- deps/v8/src/safepoint-table.cc | 4 +- deps/v8/src/sampler.cc | 3 +- deps/v8/src/scanner-character-streams.cc | 92 +- deps/v8/src/scanner-character-streams.h | 24 +- deps/v8/src/scanner.cc | 152 +- deps/v8/src/scanner.h | 10 +- deps/v8/src/scopeinfo.cc | 271 +- deps/v8/src/scopeinfo.h | 36 +- deps/v8/src/scopes.cc | 308 +- deps/v8/src/scopes.h | 78 +- deps/v8/src/snapshot/natives-external.cc | 3 +- deps/v8/src/snapshot/serialize.cc | 199 +- deps/v8/src/snapshot/serialize.h | 24 +- deps/v8/src/snapshot/snapshot-common.cc | 10 +- deps/v8/src/snapshot/snapshot-empty.cc | 3 +- deps/v8/src/snapshot/snapshot-external.cc | 3 +- deps/v8/src/snapshot/snapshot-source-sink.cc | 3 +- deps/v8/src/snapshot/snapshot.h | 3 +- deps/v8/src/string-builder.cc | 24 +- deps/v8/src/string-builder.h | 2 +- deps/v8/src/string-iterator.js | 35 +- deps/v8/src/string-search.cc | 3 +- deps/v8/src/string-stream.cc | 21 +- deps/v8/src/string-stream.h | 31 +- deps/v8/src/string.js | 135 +- deps/v8/src/strings-storage.cc | 4 +- deps/v8/src/strtod.cc | 3 +- deps/v8/src/symbol.js | 23 +- deps/v8/src/templates.js | 16 +- deps/v8/src/third_party/fdlibm/fdlibm.cc | 4 +- deps/v8/src/third_party/fdlibm/fdlibm.js | 43 +- .../kernel/tools/perf/util/jitdump.h | 83 - deps/v8/src/third_party/valgrind/LICENSE | 54 + deps/v8/src/third_party/vtune/LICENSE | 59 + deps/v8/src/token.cc | 3 +- deps/v8/src/transitions.cc | 42 +- deps/v8/src/transitions.h | 5 +- deps/v8/src/type-feedback-vector-inl.h | 8 +- deps/v8/src/type-feedback-vector.cc | 267 +- deps/v8/src/type-feedback-vector.h | 89 +- deps/v8/src/type-info.cc | 26 +- deps/v8/src/type-info.h | 8 +- deps/v8/src/typedarray.js | 101 +- deps/v8/src/types.cc | 6 +- deps/v8/src/types.h | 22 +- deps/v8/src/typing.cc | 43 +- deps/v8/src/uri.js | 42 +- deps/v8/src/utils.cc | 3 +- deps/v8/src/utils.h | 51 +- deps/v8/src/v8.cc | 3 +- deps/v8/src/v8natives.js | 362 +- deps/v8/src/variables.cc | 17 +- deps/v8/src/variables.h | 63 +- deps/v8/src/vector.h | 29 +- deps/v8/src/version.cc | 3 +- deps/v8/src/weak-collection.js | 38 +- deps/v8/src/x64/assembler-x64-inl.h | 6 +- deps/v8/src/x64/assembler-x64.cc | 23 +- deps/v8/src/x64/assembler-x64.h | 31 +- deps/v8/src/x64/builtins-x64.cc | 111 +- deps/v8/src/x64/code-stubs-x64.cc | 217 +- deps/v8/src/x64/codegen-x64.cc | 3 +- deps/v8/src/x64/cpu-x64.cc | 3 +- deps/v8/src/x64/debug-x64.cc | 50 +- deps/v8/src/x64/deoptimizer-x64.cc | 5 +- deps/v8/src/x64/disasm-x64.cc | 2 +- deps/v8/src/x64/frames-x64.cc | 9 +- deps/v8/src/x64/frames-x64.h | 30 - deps/v8/src/x64/full-codegen-x64.cc | 865 +-- deps/v8/src/x64/interface-descriptors-x64.cc | 295 +- deps/v8/src/x64/lithium-codegen-x64.cc | 284 +- deps/v8/src/x64/lithium-codegen-x64.h | 6 +- deps/v8/src/x64/lithium-gap-resolver-x64.cc | 3 +- deps/v8/src/x64/lithium-x64.cc | 77 +- deps/v8/src/x64/lithium-x64.h | 82 +- deps/v8/src/x64/macro-assembler-x64.cc | 8 +- deps/v8/src/x64/regexp-macro-assembler-x64.cc | 3 +- deps/v8/src/x87/assembler-x87-inl.h | 12 +- deps/v8/src/x87/assembler-x87.cc | 76 +- deps/v8/src/x87/assembler-x87.h | 49 +- deps/v8/src/x87/builtins-x87.cc | 99 +- deps/v8/src/x87/code-stubs-x87.cc | 238 +- deps/v8/src/x87/codegen-x87.cc | 3 +- deps/v8/src/x87/cpu-x87.cc | 3 +- deps/v8/src/x87/debug-x87.cc | 52 +- deps/v8/src/x87/deoptimizer-x87.cc | 5 +- deps/v8/src/x87/disasm-x87.cc | 17 +- deps/v8/src/x87/frames-x87.cc | 9 +- deps/v8/src/x87/frames-x87.h | 30 - deps/v8/src/x87/full-codegen-x87.cc | 895 +-- deps/v8/src/x87/interface-descriptors-x87.cc | 294 +- deps/v8/src/x87/lithium-codegen-x87.cc | 260 +- deps/v8/src/x87/lithium-codegen-x87.h | 6 +- deps/v8/src/x87/lithium-gap-resolver-x87.cc | 3 +- deps/v8/src/x87/lithium-x87.cc | 77 +- deps/v8/src/x87/lithium-x87.h | 81 +- deps/v8/src/x87/macro-assembler-x87.cc | 8 +- deps/v8/src/x87/regexp-macro-assembler-x87.cc | 3 +- deps/v8/src/zone-containers.h | 6 +- deps/v8/test/cctest/cctest.gyp | 2 - deps/v8/test/cctest/cctest.h | 28 +- deps/v8/test/cctest/cctest.status | 36 +- deps/v8/test/cctest/compiler/c-signature.h | 147 +- deps/v8/test/cctest/compiler/call-tester.h | 366 +- deps/v8/test/cctest/compiler/codegen-tester.h | 79 +- .../v8/test/cctest/compiler/function-tester.h | 21 +- .../cctest/compiler/graph-builder-tester.h | 21 +- .../compiler/simplified-graph-builder.cc | 4 +- .../compiler/simplified-graph-builder.h | 3 - .../cctest/compiler/test-changes-lowering.cc | 10 +- .../cctest/compiler/test-codegen-deopt.cc | 301 - .../cctest/compiler/test-control-reducer.cc | 1641 ------ .../cctest/compiler/test-js-constant-cache.cc | 14 +- .../test-js-context-specialization.cc | 41 +- .../cctest/compiler/test-js-typed-lowering.cc | 89 +- .../cctest/compiler/test-jump-threading.cc | 2 +- deps/v8/test/cctest/compiler/test-linkage.cc | 5 +- .../cctest/compiler/test-loop-analysis.cc | 2 +- .../compiler/test-loop-assignment-analysis.cc | 2 +- .../compiler/test-machine-operator-reducer.cc | 2 +- deps/v8/test/cctest/compiler/test-osr.cc | 62 +- deps/v8/test/cctest/compiler/test-pipeline.cc | 23 +- .../compiler/test-representation-change.cc | 8 +- .../v8/test/cctest/compiler/test-run-deopt.cc | 88 +- .../test/cctest/compiler/test-run-inlining.cc | 129 +- .../cctest/compiler/test-run-intrinsics.cc | 51 +- .../test/cctest/compiler/test-run-jscalls.cc | 2 + .../cctest/compiler/test-run-jsexceptions.cc | 43 +- .../v8/test/cctest/compiler/test-run-jsops.cc | 2 - .../test/cctest/compiler/test-run-machops.cc | 223 +- .../v8/test/cctest/compiler/test-run-stubs.cc | 137 +- .../compiler/test-simplified-lowering.cc | 46 +- deps/v8/test/cctest/gay-fixed.cc | 3 +- deps/v8/test/cctest/gay-precision.cc | 3 +- deps/v8/test/cctest/gay-shortest.cc | 3 +- deps/v8/test/cctest/print-extension.cc | 3 +- deps/v8/test/cctest/profiler-extension.cc | 3 +- deps/v8/test/cctest/test-accessors.cc | 2 +- deps/v8/test/cctest/test-api-interceptors.cc | 113 +- deps/v8/test/cctest/test-api.cc | 1506 +++-- deps/v8/test/cctest/test-assembler-arm.cc | 184 +- deps/v8/test/cctest/test-assembler-mips.cc | 3956 ++++++++++++-- deps/v8/test/cctest/test-assembler-mips64.cc | 4285 +++++++++++++-- deps/v8/test/cctest/test-assembler-ppc.cc | 88 +- deps/v8/test/cctest/test-code-stubs-arm64.cc | 4 +- deps/v8/test/cctest/test-code-stubs-mips64.cc | 3 +- deps/v8/test/cctest/test-compiler.cc | 95 +- deps/v8/test/cctest/test-constantpool.cc | 502 +- deps/v8/test/cctest/test-debug.cc | 379 +- deps/v8/test/cctest/test-decls.cc | 8 +- deps/v8/test/cctest/test-deoptimization.cc | 19 - deps/v8/test/cctest/test-disasm-arm64.cc | 9 +- deps/v8/test/cctest/test-disasm-mips.cc | 567 +- deps/v8/test/cctest/test-disasm-mips64.cc | 601 +- deps/v8/test/cctest/test-extra.js | 14 + deps/v8/test/cctest/test-feedback-vector.cc | 23 +- deps/v8/test/cctest/test-fuzz-arm64.cc | 4 +- deps/v8/test/cctest/test-global-object.cc | 6 +- deps/v8/test/cctest/test-hashing.cc | 2 +- deps/v8/test/cctest/test-hashmap.cc | 2 +- deps/v8/test/cctest/test-heap.cc | 942 +++- deps/v8/test/cctest/test-hydrogen-types.cc | 1 - deps/v8/test/cctest/test-log.cc | 2 +- .../v8/test/cctest/test-microtask-delivery.cc | 25 +- deps/v8/test/cctest/test-migrations.cc | 3 +- deps/v8/test/cctest/test-parsing.cc | 682 ++- deps/v8/test/cctest/test-profile-generator.cc | 17 +- deps/v8/test/cctest/test-reloc-info.cc | 7 +- deps/v8/test/cctest/test-serialize.cc | 42 +- deps/v8/test/cctest/test-spaces.cc | 16 +- deps/v8/test/cctest/test-strings.cc | 2 +- .../v8/test/cctest/test-thread-termination.cc | 16 +- deps/v8/test/cctest/test-threads.cc | 11 +- deps/v8/test/cctest/test-typedarrays.cc | 2 +- deps/v8/test/cctest/test-types.cc | 78 +- deps/v8/test/cctest/test-unboxed-doubles.cc | 10 +- deps/v8/test/cctest/test-utils-arm64.h | 6 +- deps/v8/test/cctest/test-version.cc | 3 +- deps/v8/test/cctest/test-weakmaps.cc | 16 +- deps/v8/test/cctest/test-weaksets.cc | 13 +- deps/v8/test/cctest/trace-extension.cc | 3 +- deps/v8/test/js-perf-test/Exceptions/run.js | 26 + .../test/js-perf-test/Exceptions/try-catch.js | 110 + deps/v8/test/js-perf-test/JSTests.json | 22 +- deps/v8/test/js-perf-test/Scope/run.js | 26 + deps/v8/test/js-perf-test/Scope/with.js | 90 + deps/v8/test/js-perf-test/base.js | 12 +- deps/v8/test/message/arrow-bare-rest-param.js | 7 + .../v8/test/message/arrow-bare-rest-param.out | 4 + deps/v8/test/message/arrow-missing.js | 7 + deps/v8/test/message/arrow-missing.out | 4 + .../test/message/arrow-param-after-rest-2.js | 7 + .../test/message/arrow-param-after-rest-2.out | 4 + .../v8/test/message/arrow-param-after-rest.js | 7 + .../test/message/arrow-param-after-rest.out | 4 + .../arrow-strict-eval-bare-parameter.js | 8 + .../arrow-strict-eval-bare-parameter.out | 4 + deps/v8/test/message/arrow-two-rest-params.js | 7 + .../v8/test/message/arrow-two-rest-params.out | 4 + .../message/class-constructor-accessor.js | 4 +- .../message/class-constructor-generator.js | 4 +- .../message/destructuring-modify-const.js | 9 + .../message/destructuring-modify-const.out | 5 + deps/v8/test/message/invalid-spread-2.js | 7 + deps/v8/test/message/invalid-spread-2.out | 4 + deps/v8/test/message/invalid-spread.js | 7 + deps/v8/test/message/invalid-spread.out | 4 + deps/v8/test/message/message.status | 7 - deps/v8/test/message/no-legacy-const-2.js | 7 + deps/v8/test/message/no-legacy-const-2.out | 5 + deps/v8/test/message/no-legacy-const-3.js | 7 + deps/v8/test/message/no-legacy-const-3.out | 5 + deps/v8/test/message/no-legacy-const.js | 7 + deps/v8/test/message/no-legacy-const.out | 5 + .../message/rest-param-class-setter-strict.js | 12 + .../rest-param-class-setter-strict.out | 4 + .../rest-param-object-setter-sloppy.js | 11 + .../rest-param-object-setter-sloppy.out | 4 + .../rest-param-object-setter-strict.js | 12 + .../rest-param-object-setter-strict.out | 4 + .../test/message/strong-object-freeze-prop.js | 11 + .../message/strong-object-freeze-prop.out | 9 + .../test/message/strong-object-set-proto.js | 9 + .../test/message/strong-object-set-proto.out | 9 + .../super-constructor-extra-statement.js | 4 +- deps/v8/test/message/super-constructor.js | 4 +- deps/v8/test/message/super-in-function.js | 4 +- deps/v8/test/mjsunit/arguments.js | 16 + deps/v8/test/mjsunit/array-length.js | 13 + deps/v8/test/mjsunit/array-sort.js | 16 + deps/v8/test/mjsunit/asm/atomics-add.js | 93 + deps/v8/test/mjsunit/asm/atomics-and.js | 94 + .../mjsunit/asm/atomics-compareexchange.js | 121 + deps/v8/test/mjsunit/asm/atomics-exchange.js | 92 + deps/v8/test/mjsunit/asm/atomics-load.js | 102 + deps/v8/test/mjsunit/asm/atomics-or.js | 93 + deps/v8/test/mjsunit/asm/atomics-store.js | 109 + deps/v8/test/mjsunit/asm/atomics-sub.js | 94 + deps/v8/test/mjsunit/asm/atomics-xor.js | 93 + deps/v8/test/mjsunit/big-array-literal.js | 3 +- deps/v8/test/mjsunit/call-counts.js | 43 + deps/v8/test/mjsunit/call-runtime-tail.js | 81 + .../compiler/deopt-tonumber-compare.js | 44 + .../mjsunit/compiler/deopt-tonumber-shift.js | 40 + deps/v8/test/mjsunit/compiler/jsnatives.js | 4 +- deps/v8/test/mjsunit/compiler/optimize_max.js | 69 + deps/v8/test/mjsunit/compiler/optimize_min.js | 69 + .../v8/test/mjsunit/compiler/osr-array-len.js | 22 + deps/v8/test/mjsunit/compiler/osr-maze1.js | 2 +- deps/v8/test/mjsunit/compiler/osr-maze2.js | 2 +- deps/v8/test/mjsunit/compiler/regress-4206.js | 28 + deps/v8/test/mjsunit/compiler/regress-4207.js | 15 + .../test/mjsunit/compiler/regress-445907.js | 2 - .../test/mjsunit/compiler/regress-446647.js | 2 +- .../test/mjsunit/compiler/regress-447567.js | 2 - .../test/mjsunit/compiler/regress-491578.js | 15 + .../mjsunit/compiler/regress-shift-left.js | 41 + .../compiler/regress-shift-right-logical.js | 41 + .../mjsunit/compiler/regress-shift-right.js | 41 + .../mjsunit/compiler/regress-uint8-deopt.js | 2 +- .../compiler/regress-variable-liveness.js | 22 + .../test/mjsunit/compiler/stubs/floor-stub.js | 54 + deps/v8/test/mjsunit/compiler/try-binop.js | 45 + deps/v8/test/mjsunit/compiler/try-deopt.js | 3 +- deps/v8/test/mjsunit/compiler/try-osr.js | 51 + ...1878.js => d8-worker-sharedarraybuffer.js} | 50 +- ...t-literal.js => d8-worker-spawn-worker.js} | 19 +- deps/v8/test/mjsunit/d8-worker.js | 137 + deps/v8/test/mjsunit/date.js | 14 + deps/v8/test/mjsunit/debug-backtrace-text.js | 2 +- deps/v8/test/mjsunit/debug-backtrace.js | 4 +- deps/v8/test/mjsunit/debug-break-inline.js | 2 +- deps/v8/test/mjsunit/debug-breakpoints.js | 1 - .../mjsunit/debug-clearbreakpointgroup.js | 1 - .../test/mjsunit/debug-evaluate-arguments.js | 2 +- .../v8/test/mjsunit/debug-evaluate-closure.js | 1 - deps/v8/test/mjsunit/debug-evaluate-with.js | 1 - .../mjsunit/debug-liveedit-breakpoints.js | 2 + .../mjsunit/debug-liveedit-patch-positions.js | 3 + .../mjsunit/debug-liveedit-stack-padding.js | 4 +- deps/v8/test/mjsunit/debug-receiver.js | 2 +- deps/v8/test/mjsunit/debug-references.js | 3 +- deps/v8/test/mjsunit/debug-scopes.js | 6 +- .../test/mjsunit/debug-script-breakpoints.js | 3 + deps/v8/test/mjsunit/debug-script.js | 5 +- deps/v8/test/mjsunit/debug-step-2.js | 1 - deps/v8/test/mjsunit/debug-stepframe.js | 6 +- .../test/mjsunit/debug-stepin-accessor-ic.js | 49 + .../v8/test/mjsunit/debug-stepin-positions.js | 11 +- .../test/mjsunit/debug-stepout-scope-part1.js | 2 +- .../test/mjsunit/debug-stepout-scope-part2.js | 2 +- .../test/mjsunit/debug-stepout-scope-part3.js | 2 +- .../test/mjsunit/debug-stepout-scope-part4.js | 2 +- .../test/mjsunit/debug-stepout-scope-part5.js | 2 +- .../test/mjsunit/debug-stepout-scope-part6.js | 2 +- .../test/mjsunit/debug-stepout-scope-part7.js | 2 +- .../test/mjsunit/debug-stepout-scope-part8.js | 2 +- deps/v8/test/mjsunit/declare-locally.js | 2 +- deps/v8/test/mjsunit/deserialize-script-id.js | 8 +- deps/v8/test/mjsunit/elements-kind.js | 2 +- deps/v8/test/mjsunit/enumeration-order.js | 8 +- .../v8/test/mjsunit/es6/arguments-iterator.js | 5 +- deps/v8/test/mjsunit/es6/block-for.js | 27 +- .../mjsunit/es6/block-non-strict-errors.js | 2 - .../class-property-name-eval-arguments.js | 2 +- .../{harmony => es6}/classes-experimental.js | 2 - .../{harmony => es6}/classes-lazy-parsing.js | 15 +- .../mjsunit/{harmony => es6}/classes-maps.js | 2 +- .../classes-subclass-arrays.js | 3 +- .../test/mjsunit/{harmony => es6}/classes.js | 2 +- deps/v8/test/mjsunit/es6/debug-blockscopes.js | 10 +- .../mjsunit/es6/debug-evaluate-blockscopes.js | 8 +- .../debug-step-into-class-extends.js | 2 +- .../debug-step-into-constructor.js | 21 +- .../v8/test/mjsunit/es6/debug-stepnext-for.js | 33 +- .../test/mjsunit/es6/generators-relocation.js | 6 +- .../v8/test/mjsunit/es6/generators-runtime.js | 33 +- .../mjsunit/es6/indexed-integer-exotics.js | 21 +- .../v8/test/mjsunit/es6/iterator-prototype.js | 58 + .../method-name-eval-arguments.js | 2 - .../object-literals-method.js | 16 +- .../object-literals-property-shorthand.js | 2 - .../mjsunit/es6/promise-internal-setter.js | 17 + .../test/mjsunit/es6/regress/regress-2506.js | 16 +- .../{harmony => es6}/regress/regress-3750.js | 3 +- .../test/mjsunit/es6/regress/regress-4097.js | 37 + .../regress/regress-455141.js | 2 +- deps/v8/test/mjsunit/es6/string-html.js | 42 + deps/v8/test/mjsunit/es6/templates.js | 20 + .../test/mjsunit/{harmony => es6}/toMethod.js | 2 +- .../test/mjsunit/es6/typedarray-copywithin.js | 173 + .../typedarray-every.js} | 15 +- deps/v8/test/mjsunit/es6/typedarray-fill.js | 45 + deps/v8/test/mjsunit/es6/typedarray-find.js | 187 + .../test/mjsunit/es6/typedarray-findindex.js | 187 + .../typedarray-foreach.js} | 21 +- deps/v8/test/mjsunit/es6/typedarray-from.js | 121 + .../test/mjsunit/es6/typedarray-indexing.js | 71 + .../test/mjsunit/es6/typedarray-iteration.js | 194 + .../typedarray-of.js} | 2 - .../{harmony => es6}/typedarray-proto.js | 2 - deps/v8/test/mjsunit/es6/typedarray-reduce.js | 250 + .../v8/test/mjsunit/es6/typedarray-reverse.js | 54 + deps/v8/test/mjsunit/es6/typedarray-slice.js | 71 + deps/v8/test/mjsunit/es6/typedarray-sort.js | 55 + .../test/mjsunit/es6/typedarray-tostring.js | 86 + .../typedarrays.js => es6/typedarray.js} | 37 + .../v8/test/mjsunit/external-array-no-sse2.js | 715 --- deps/v8/test/mjsunit/for-in.js | 12 + deps/v8/test/mjsunit/function-bind-name.js | 13 + .../mjsunit/get-caller-js-function-throws.js | 14 + .../v8/test/mjsunit/get-caller-js-function.js | 21 + .../mjsunit/global-deleted-property-keyed.js | 6 +- deps/v8/test/mjsunit/global-hash.js | 19 + deps/v8/test/mjsunit/handle-count-ast.js | 12 + .../mjsunit/handle-count-runtime-literals.js | 1230 +++++ deps/v8/test/mjsunit/harmony/array-concat.js | 24 +- deps/v8/test/mjsunit/harmony/array-find.js | 24 +- .../test/mjsunit/harmony/array-findindex.js | 24 +- deps/v8/test/mjsunit/harmony/array-from.js | 28 + deps/v8/test/mjsunit/harmony/array-of.js | 30 + .../arrow-functions-lexical-arguments.js | 2 +- .../mjsunit/harmony/arrow-functions-this.js | 81 + .../test/mjsunit/harmony/arrow-rest-params.js | 142 + deps/v8/test/mjsunit/harmony/atomics.js | 444 ++ .../class-computed-property-names-super.js | 2 +- .../computed-property-names-classes.js | 2 +- .../harmony/computed-property-names-deopt.js | 30 + ...-property-names-object-literals-methods.js | 2 +- .../harmony/computed-property-names-super.js | 3 +- ...ucturing-parameters-literalcount-nolazy.js | 41 + .../destructuring-parameters-literalcount.js | 41 + deps/v8/test/mjsunit/harmony/destructuring.js | 738 +++ deps/v8/test/mjsunit/harmony/new-target.js | 370 ++ .../mjsunit/harmony/object-literals-super.js | 51 +- deps/v8/test/mjsunit/harmony/private.js | 52 +- deps/v8/test/mjsunit/harmony/proxies-for.js | 17 +- deps/v8/test/mjsunit/harmony/proxies.js | 3 +- .../mjsunit/harmony/regress/regress-4160.js | 29 + .../regress/regress-arrow-duplicate-params.js | 7 + .../harmony/regress/regress-crbug-451770.js | 2 +- .../harmony/rest-params-lazy-parsing.js | 18 +- deps/v8/test/mjsunit/harmony/rest-params.js | 2 +- .../test/mjsunit/harmony/set-prototype-of.js | 18 + .../test/mjsunit/harmony/sharedarraybuffer.js | 577 ++ deps/v8/test/mjsunit/harmony/spread-array.js | 179 + .../harmony/spread-call-super-property.js | 20 + deps/v8/test/mjsunit/harmony/super.js | 151 +- .../has-own-property-evaluation-order.js | 13 + .../json-replacer-number-wrapper-tostring.js | 20 + deps/v8/test/mjsunit/json-replacer-order.js | 26 + deps/v8/test/mjsunit/math-abs.js | 16 + deps/v8/test/mjsunit/math-floor-negative.js | 2 +- .../mjsunit/math-floor-of-div-minus-zero.js | 2 +- .../test/mjsunit/math-floor-of-div-nosudiv.js | 2 +- deps/v8/test/mjsunit/math-floor-of-div.js | 2 +- deps/v8/test/mjsunit/messages.js | 98 +- deps/v8/test/mjsunit/migrations.js | 12 - deps/v8/test/mjsunit/mjsunit.status | 33 +- deps/v8/test/mjsunit/own-symbols.js | 55 - deps/v8/test/mjsunit/proto-accessor.js | 18 + deps/v8/test/mjsunit/regexp-sort.js | 48 + .../mjsunit/regress/poly_count_operation.js | 2 +- deps/v8/test/mjsunit/regress/regress-1119.js | 2 +- deps/v8/test/mjsunit/regress/regress-1130.js | 2 +- deps/v8/test/mjsunit/regress/regress-1132.js | 2 +- .../v8/test/mjsunit/regress/regress-115452.js | 2 +- .../test/mjsunit/regress/regress-1170187.js | 1 - .../v8/test/mjsunit/regress/regress-119609.js | 1 - .../test/mjsunit/regress/regress-1199637.js | 2 +- .../v8/test/mjsunit/regress/regress-131994.js | 1 - deps/v8/test/mjsunit/regress/regress-1419.js | 10 +- deps/v8/test/mjsunit/regress/regress-1586.js | 6 +- .../v8/test/mjsunit/regress/regress-166553.js | 2 +- deps/v8/test/mjsunit/regress/regress-2318.js | 3 +- deps/v8/test/mjsunit/regress/regress-2593.js | 2 +- deps/v8/test/mjsunit/regress/regress-2653.js | 2 +- .../v8/test/mjsunit/regress/regress-325676.js | 1 - .../v8/test/mjsunit/regress/regress-360733.js | 2 +- .../v8/test/mjsunit/regress/regress-370384.js | 2 +- deps/v8/test/mjsunit/regress/regress-3718.js | 21 + deps/v8/test/mjsunit/regress/regress-3960.js | 2 +- deps/v8/test/mjsunit/regress/regress-4121.js | 3 + deps/v8/test/mjsunit/regress/regress-4169.js | 9 + .../test/mjsunit/regress/regress-417709a.js | 2 +- deps/v8/test/mjsunit/regress/regress-4214.js | 6 + .../v8/test/mjsunit/regress/regress-4255-1.js | 26 + .../v8/test/mjsunit/regress/regress-4255-2.js | 24 + .../v8/test/mjsunit/regress/regress-4255-3.js | 24 + .../v8/test/mjsunit/regress/regress-4255-4.js | 24 + .../v8/test/mjsunit/regress/regress-436896.js | 2 +- .../v8/test/mjsunit/regress/regress-479528.js | 13 + .../v8/test/mjsunit/regress/regress-489151.js | 12 + .../v8/test/mjsunit/regress/regress-491481.js | 15 + .../v8/test/mjsunit/regress/regress-491536.js | 10 + .../v8/test/mjsunit/regress/regress-499790.js | 14 + .../v8/test/mjsunit/regress/regress-500173.js | 12 + .../v8/test/mjsunit/regress/regress-500176.js | 13 + .../v8/test/mjsunit/regress/regress-500831.js | 94 + .../v8/test/mjsunit/regress/regress-500980.js | 7 + .../v8/test/mjsunit/regress/regress-503565.js | 21 + .../v8/test/mjsunit/regress/regress-507980.js | 8 + deps/v8/test/mjsunit/regress/regress-581.js | 6 +- deps/v8/test/mjsunit/regress/regress-747.js | 2 +- deps/v8/test/mjsunit/regress/regress-78270.js | 2 - .../mjsunit/regress/regress-arguments-gc.js | 2 +- .../regress-assignment-in-test-context.js | 3 +- .../mjsunit/regress/regress-binop-nosse2.js | 167 - .../mjsunit/regress/regress-crbug-107996.js | 1 - .../mjsunit/regress/regress-crbug-171715.js | 1 - .../mjsunit/regress/regress-crbug-217858.js | 2 +- .../mjsunit/regress/regress-crbug-222893.js | 1 - .../mjsunit/regress/regress-crbug-424142.js | 3 + .../mjsunit/regress/regress-crbug-450960.js | 8 +- .../mjsunit/regress/regress-crbug-467180.js | 41 + .../mjsunit/regress/regress-crbug-471659.js | 22 + .../mjsunit/regress/regress-crbug-474297.js | 5 + .../mjsunit/regress/regress-crbug-480819.js | 2 +- .../mjsunit/regress/regress-crbug-481896.js | 56 + .../mjsunit/regress/regress-crbug-482998.js | 23 + .../mjsunit/regress/regress-crbug-487105.js | 9 + .../mjsunit/regress/regress-crbug-487289.js | 20 + .../mjsunit/regress/regress-crbug-487608.js | 22 + .../mjsunit/regress/regress-crbug-489293.js | 16 + .../mjsunit/regress/regress-crbug-489597.js | 12 + .../regress/regress-crbug-489597.js-script | 5 + .../mjsunit/regress/regress-crbug-490680.js | 18 + .../mjsunit/regress/regress-crbug-491062.js | 22 + .../mjsunit/regress/regress-crbug-491943.js | 25 + .../mjsunit/regress/regress-crbug-492526.js | 7 + .../mjsunit/regress/regress-crbug-493284.js | 10 + .../mjsunit/regress/regress-crbug-493290.js | 9 + .../mjsunit/regress/regress-crbug-493568.js | 12 + .../mjsunit/regress/regress-crbug-493779.js | 11 + .../mjsunit/regress/regress-crbug-498022.js | 15 + .../mjsunit/regress/regress-crbug-498142.js | 8 + .../mjsunit/regress/regress-crbug-498811.js | 9 + ...rbug-514268.js => regress-crbug-500435.js} | 7 +- .../mjsunit/regress/regress-crbug-500497.js | 3 + .../mjsunit/regress/regress-crbug-500824.js | 23 + .../mjsunit/regress/regress-crbug-501711.js | 14 + .../mjsunit/regress/regress-crbug-501808.js | 6 + .../mjsunit/regress/regress-crbug-501809.js | 9 + .../mjsunit/regress/regress-crbug-503578.js | 14 + .../mjsunit/regress/regress-crbug-503698.js | 9 + .../mjsunit/regress/regress-crbug-503968.js | 13 + .../mjsunit/regress/regress-crbug-503991.js | 9 + .../mjsunit/regress/regress-crbug-504136.js | 9 + .../mjsunit/regress/regress-crbug-504727.js | 9 + .../mjsunit/regress/regress-crbug-504729.js | 9 + .../mjsunit/regress/regress-crbug-504787.js | 15 + .../mjsunit/regress/regress-crbug-505007-1.js | 14 + .../mjsunit/regress/regress-crbug-505007-2.js | 15 + .../mjsunit/regress/regress-crbug-505354.js | 14 + .../mjsunit/regress/regress-crbug-505370.js | 22 + .../mjsunit/regress/regress-crbug-505778.js | 8 + .../mjsunit/regress/regress-crbug-506443.js | 89 + .../regress-debug-code-recompilation.js | 3 + .../regress-debug-deopt-while-recompile.js | 1 - .../mjsunit/regress/regress-eval-context.js | 20 + .../regress-existing-shared-function-info.js | 18 + .../regress/regress-opt-after-debug-deopt.js | 1 - .../mjsunit/regress/regress-osr-context.js | 19 + .../regress-prepare-break-while-recompile.js | 2 + .../regress/regress-regexp-codeflush.js | 2 +- .../regress/regress-splice-large-index.js | 1 + deps/v8/test/mjsunit/regress/regress-x87.js | 2 +- .../mjsunit/regress/string-set-char-deopt.js | 2 +- deps/v8/test/mjsunit/samevalue.js | 2 +- deps/v8/test/mjsunit/strict-mode.js | 2 - deps/v8/test/mjsunit/string-normalize.js | 11 + deps/v8/test/mjsunit/strong/classes.js | 3 +- .../mjsunit/strong/declaration-after-use.js | 14 +- deps/v8/test/mjsunit/strong/function-arity.js | 355 ++ deps/v8/test/mjsunit/strong/functions.js | 4 +- .../strong/implicit-conversions-constants.js | 203 + .../strong/implicit-conversions-count.js | 168 + .../strong/implicit-conversions-inlining.js | 231 +- .../mjsunit/strong/implicit-conversions.js | 214 +- deps/v8/test/mjsunit/strong/literals.js | 352 ++ deps/v8/test/mjsunit/strong/load-builtins.js | 42 + .../load-element-mutate-backing-store.js | 239 + deps/v8/test/mjsunit/strong/load-element.js | 267 + .../load-property-mutate-backing-store.js | 174 + deps/v8/test/mjsunit/strong/load-property.js | 203 + deps/v8/test/mjsunit/strong/load-proxy.js | 98 + deps/v8/test/mjsunit/strong/load-super.js | 102 + deps/v8/test/mjsunit/strong/object-delete.js | 255 + .../mjsunit/strong/object-freeze-property.js | 75 + .../mjsunit/strong/object-set-prototype.js | 83 + deps/v8/test/mjsunit/strong/super.js | 62 + deps/v8/test/mjsunit/testcfg.py | 3 +- .../mjsunit/third_party/object-keys/LICENSE | 30 + .../{ => object-keys}/object-keys.js | 0 .../mjsunit/third_party/regexp-pcre/LICENSE | 68 + .../{ => regexp-pcre}/regexp-pcre.js | 0 deps/v8/test/mjsunit/this-dynamic-lookup.js | 10 + .../mjsunit/unbox-double-field-indexed.js | 23 + deps/v8/test/mjsunit/unbox-double-field.js | 22 + .../test/mjsunit/unbox-smi-field-indexed.js | 23 + deps/v8/test/mjsunit/unbox-smi-field.js | 22 + deps/v8/test/mjsunit/undetectable-compare.js | 96 + deps/v8/test/mjsunit/undetectable.js | 87 + deps/v8/test/mjsunit/uri.js | 10 + deps/v8/test/mozilla/mozilla.status | 1 + deps/v8/test/simdjs/SimdJs.json | 315 ++ deps/v8/test/simdjs/generate.py | 61 + deps/v8/test/simdjs/harness-adapt.js | 29 + deps/v8/test/simdjs/harness-finish.js | 26 + deps/v8/test/simdjs/simdjs.status | 26 + deps/v8/test/simdjs/testcfg.py | 101 + deps/v8/test/test262-es6/README | 4 +- deps/v8/test/test262-es6/test262-es6.status | 1066 ++-- deps/v8/test/test262-es6/testcfg.py | 34 +- deps/v8/test/test262/test262.status | 25 + deps/v8/test/test262/testcfg.py | 13 + deps/v8/test/unittests/base/bits-unittest.cc | 19 + .../instruction-selector-arm64-unittest.cc | 563 +- .../common-operator-reducer-unittest.cc | 342 +- .../compiler/common-operator-unittest.cc | 52 +- .../compiler/control-equivalence-unittest.cc | 6 +- .../control-flow-optimizer-unittest.cc | 20 +- .../compiler/control-reducer-unittest.cc | 326 -- .../dead-code-elimination-unittest.cc | 375 ++ .../compiler/graph-reducer-unittest.cc | 165 +- .../compiler/graph-reducer-unittest.h | 1 + .../compiler/graph-trimmer-unittest.cc | 85 + .../test/unittests/compiler/graph-unittest.cc | 19 +- .../test/unittests/compiler/graph-unittest.h | 2 + .../compiler/instruction-selector-unittest.cc | 110 +- .../compiler/instruction-selector-unittest.h | 19 +- .../compiler/instruction-sequence-unittest.cc | 4 +- .../compiler/js-builtin-reducer-unittest.cc | 34 +- .../js-intrinsic-lowering-unittest.cc | 71 +- .../compiler/js-operator-unittest.cc | 9 +- .../compiler/js-type-feedback-unittest.cc | 389 +- .../compiler/js-typed-lowering-unittest.cc | 321 +- .../compiler/liveness-analyzer-unittest.cc | 10 +- .../compiler/load-elimination-unittest.cc | 4 +- .../compiler/loop-peeling-unittest.cc | 3 +- .../machine-operator-reducer-unittest.cc | 84 +- .../compiler/machine-operator-unittest.cc | 237 +- .../compiler/node-properties-unittest.cc | 114 +- .../unittests/compiler/node-test-utils.cc | 197 +- .../test/unittests/compiler/node-test-utils.h | 24 +- .../test/unittests/compiler/node-unittest.cc | 92 +- .../unittests/compiler/scheduler-unittest.cc | 1382 +---- .../compiler/simplified-operator-unittest.cc | 1 - .../tail-call-optimization-unittest.cc | 22 +- deps/v8/test/unittests/counters-unittest.cc | 28 +- .../heap/gc-idle-time-handler-unittest.cc | 395 +- deps/v8/test/unittests/heap/heap-unittest.cc | 48 + .../unittests/heap/memory-reducer-unittest.cc | 331 ++ .../libplatform/default-platform-unittest.cc | 88 + deps/v8/test/unittests/unittests.gyp | 5 +- .../webkit/class-syntax-extends-expected.txt | 4 +- .../webkit/cyclic-prototypes-expected.txt | 2 +- .../Object-getOwnPropertyNames-expected.txt | 6 +- .../fast/js/Object-getOwnPropertyNames.js | 6 +- .../webkit/fast/js/arguments-expected.txt | 2 +- ...ve-property-access-edge-cases-expected.txt | 6 +- deps/v8/test/webkit/webkit.status | 4 +- deps/v8/testing/commit_queue/config.json | 89 - deps/v8/tools/blink_tests/TestExpectations | 13 +- deps/v8/tools/gc-nvp-to-csv.py | 30 + deps/v8/tools/gc-nvp-trace-processor.py | 40 +- deps/v8/tools/gc_nvp_common.py | 32 + deps/v8/tools/gdb-v8-support.py | 31 + deps/v8/tools/gdbinit | 2 +- deps/v8/tools/grokdump.py | 154 +- deps/v8/tools/gyp/v8.gyp | 60 +- deps/v8/tools/js2c.py | 2 +- deps/v8/tools/jsmin.py | 2 +- deps/v8/tools/parser-shell.cc | 24 +- deps/v8/tools/parser-shell.gyp | 4 + deps/v8/tools/presubmit.py | 8 +- deps/v8/tools/release/check_clusterfuzz.py | 36 + deps/v8/tools/release/chromium_roll.py | 10 +- deps/v8/tools/release/test_scripts.py | 2 +- deps/v8/tools/run-deopt-fuzzer.py | 1 + deps/v8/tools/run-tests.py | 82 +- deps/v8/tools/run_perf.py | 69 +- deps/v8/tools/testrunner/local/commands.py | 119 +- deps/v8/tools/testrunner/local/execution.py | 69 +- deps/v8/tools/testrunner/local/progress.py | 53 +- deps/v8/tools/testrunner/local/statusfile.py | 3 +- deps/v8/tools/testrunner/local/testsuite.py | 2 +- deps/v8/tools/testrunner/local/utils.py | 11 + .../testrunner/network/network_execution.py | 4 +- deps/v8/tools/testrunner/objects/testcase.py | 2 +- deps/v8/tools/try_perf.py | 4 + deps/v8/tools/v8heapconst.py | 340 +- deps/v8/tools/verify_source_deps.py | 106 + deps/v8/tools/whitespace.txt | 2 +- 1284 files changed, 88587 insertions(+), 46662 deletions(-) delete mode 100644 deps/v8/build/android.gypi create mode 100644 deps/v8/infra/OWNERS create mode 100644 deps/v8/infra/README.md rename deps/v8/{testing/commit_queue => infra/config}/OWNERS (100%) create mode 100644 deps/v8/infra/config/cq.cfg create mode 100644 deps/v8/infra/project-config/README.md create mode 100644 deps/v8/infra/project-config/cr-buildbucket.cfg create mode 100644 deps/v8/samples/hello-world.cc create mode 100644 deps/v8/src/ast-literal-reindexer.cc create mode 100644 deps/v8/src/ast-literal-reindexer.h create mode 100644 deps/v8/src/compiler/coalesced-live-ranges.cc create mode 100644 deps/v8/src/compiler/coalesced-live-ranges.h delete mode 100644 deps/v8/src/compiler/control-reducer.cc delete mode 100644 deps/v8/src/compiler/control-reducer.h create mode 100644 deps/v8/src/compiler/dead-code-elimination.cc create mode 100644 deps/v8/src/compiler/dead-code-elimination.h create mode 100644 deps/v8/src/compiler/graph-trimmer.cc create mode 100644 deps/v8/src/compiler/graph-trimmer.h create mode 100644 deps/v8/src/compiler/greedy-allocator.cc create mode 100644 deps/v8/src/compiler/greedy-allocator.h create mode 100644 deps/v8/src/compiler/js-frame-specialization.cc create mode 100644 deps/v8/src/compiler/js-frame-specialization.h create mode 100644 deps/v8/src/compiler/x87/OWNERS create mode 100644 deps/v8/src/compiler/x87/code-generator-x87.cc create mode 100644 deps/v8/src/compiler/x87/instruction-codes-x87.h create mode 100644 deps/v8/src/compiler/x87/instruction-selector-x87.cc create mode 100644 deps/v8/src/compiler/x87/linkage-x87.cc create mode 100644 deps/v8/src/expression-classifier.h create mode 100644 deps/v8/src/harmony-atomics.js create mode 100644 deps/v8/src/harmony-concat-spreadable.js create mode 100644 deps/v8/src/harmony-sharedarraybuffer.js create mode 100644 deps/v8/src/heap/memory-reducer.cc create mode 100644 deps/v8/src/heap/memory-reducer.h create mode 100644 deps/v8/src/iterator-prototype.js create mode 100644 deps/v8/src/pattern-rewriter.cc delete mode 100644 deps/v8/src/perf-jit.cc delete mode 100644 deps/v8/src/perf-jit.h create mode 100644 deps/v8/src/prologue.js create mode 100644 deps/v8/src/runtime/runtime-atomics.cc create mode 100644 deps/v8/src/runtime/runtime-forin.cc delete mode 100644 deps/v8/src/third_party/kernel/tools/perf/util/jitdump.h create mode 100644 deps/v8/src/third_party/valgrind/LICENSE create mode 100644 deps/v8/src/third_party/vtune/LICENSE delete mode 100644 deps/v8/test/cctest/compiler/test-codegen-deopt.cc delete mode 100644 deps/v8/test/cctest/compiler/test-control-reducer.cc create mode 100644 deps/v8/test/cctest/test-extra.js create mode 100644 deps/v8/test/js-perf-test/Exceptions/run.js create mode 100644 deps/v8/test/js-perf-test/Exceptions/try-catch.js create mode 100644 deps/v8/test/js-perf-test/Scope/run.js create mode 100644 deps/v8/test/js-perf-test/Scope/with.js create mode 100644 deps/v8/test/message/arrow-bare-rest-param.js create mode 100644 deps/v8/test/message/arrow-bare-rest-param.out create mode 100644 deps/v8/test/message/arrow-missing.js create mode 100644 deps/v8/test/message/arrow-missing.out create mode 100644 deps/v8/test/message/arrow-param-after-rest-2.js create mode 100644 deps/v8/test/message/arrow-param-after-rest-2.out create mode 100644 deps/v8/test/message/arrow-param-after-rest.js create mode 100644 deps/v8/test/message/arrow-param-after-rest.out create mode 100644 deps/v8/test/message/arrow-strict-eval-bare-parameter.js create mode 100644 deps/v8/test/message/arrow-strict-eval-bare-parameter.out create mode 100644 deps/v8/test/message/arrow-two-rest-params.js create mode 100644 deps/v8/test/message/arrow-two-rest-params.out create mode 100644 deps/v8/test/message/destructuring-modify-const.js create mode 100644 deps/v8/test/message/destructuring-modify-const.out create mode 100644 deps/v8/test/message/invalid-spread-2.js create mode 100644 deps/v8/test/message/invalid-spread-2.out create mode 100644 deps/v8/test/message/invalid-spread.js create mode 100644 deps/v8/test/message/invalid-spread.out create mode 100644 deps/v8/test/message/no-legacy-const-2.js create mode 100644 deps/v8/test/message/no-legacy-const-2.out create mode 100644 deps/v8/test/message/no-legacy-const-3.js create mode 100644 deps/v8/test/message/no-legacy-const-3.out create mode 100644 deps/v8/test/message/no-legacy-const.js create mode 100644 deps/v8/test/message/no-legacy-const.out create mode 100644 deps/v8/test/message/rest-param-class-setter-strict.js create mode 100644 deps/v8/test/message/rest-param-class-setter-strict.out create mode 100644 deps/v8/test/message/rest-param-object-setter-sloppy.js create mode 100644 deps/v8/test/message/rest-param-object-setter-sloppy.out create mode 100644 deps/v8/test/message/rest-param-object-setter-strict.js create mode 100644 deps/v8/test/message/rest-param-object-setter-strict.out create mode 100644 deps/v8/test/message/strong-object-freeze-prop.js create mode 100644 deps/v8/test/message/strong-object-freeze-prop.out create mode 100644 deps/v8/test/message/strong-object-set-proto.js create mode 100644 deps/v8/test/message/strong-object-set-proto.out create mode 100644 deps/v8/test/mjsunit/asm/atomics-add.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-and.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-compareexchange.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-exchange.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-load.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-or.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-store.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-sub.js create mode 100644 deps/v8/test/mjsunit/asm/atomics-xor.js create mode 100644 deps/v8/test/mjsunit/call-counts.js create mode 100644 deps/v8/test/mjsunit/call-runtime-tail.js create mode 100644 deps/v8/test/mjsunit/compiler/deopt-tonumber-compare.js create mode 100644 deps/v8/test/mjsunit/compiler/deopt-tonumber-shift.js create mode 100644 deps/v8/test/mjsunit/compiler/optimize_max.js create mode 100644 deps/v8/test/mjsunit/compiler/optimize_min.js create mode 100644 deps/v8/test/mjsunit/compiler/osr-array-len.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-4206.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-4207.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-491578.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-shift-left.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-shift-right-logical.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-shift-right.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-variable-liveness.js create mode 100644 deps/v8/test/mjsunit/compiler/stubs/floor-stub.js create mode 100644 deps/v8/test/mjsunit/compiler/try-binop.js create mode 100644 deps/v8/test/mjsunit/compiler/try-osr.js rename deps/v8/test/mjsunit/{regress/regress-1878.js => d8-worker-sharedarraybuffer.js} (59%) rename deps/v8/test/mjsunit/{regress/regress-parse-object-literal.js => d8-worker-spawn-worker.js} (79%) create mode 100644 deps/v8/test/mjsunit/d8-worker.js create mode 100644 deps/v8/test/mjsunit/debug-stepin-accessor-ic.js rename deps/v8/test/mjsunit/{harmony => es6}/class-property-name-eval-arguments.js (96%) rename deps/v8/test/mjsunit/{harmony => es6}/classes-experimental.js (99%) rename deps/v8/test/mjsunit/{harmony => es6}/classes-lazy-parsing.js (52%) rename deps/v8/test/mjsunit/{harmony => es6}/classes-maps.js (96%) rename deps/v8/test/mjsunit/{harmony => es6}/classes-subclass-arrays.js (99%) rename deps/v8/test/mjsunit/{harmony => es6}/classes.js (99%) rename deps/v8/test/mjsunit/{harmony => es6}/debug-step-into-class-extends.js (94%) rename deps/v8/test/mjsunit/{harmony => es6}/debug-step-into-constructor.js (84%) create mode 100644 deps/v8/test/mjsunit/es6/iterator-prototype.js rename deps/v8/test/mjsunit/{harmony => es6}/method-name-eval-arguments.js (93%) rename deps/v8/test/mjsunit/{harmony => es6}/object-literals-method.js (93%) rename deps/v8/test/mjsunit/{harmony => es6}/object-literals-property-shorthand.js (97%) create mode 100644 deps/v8/test/mjsunit/es6/promise-internal-setter.js rename deps/v8/test/mjsunit/{harmony => es6}/regress/regress-3750.js (88%) create mode 100644 deps/v8/test/mjsunit/es6/regress/regress-4097.js rename deps/v8/test/mjsunit/{harmony => es6}/regress/regress-455141.js (88%) rename deps/v8/test/mjsunit/{harmony => es6}/toMethod.js (97%) create mode 100644 deps/v8/test/mjsunit/es6/typedarray-copywithin.js rename deps/v8/test/mjsunit/{harmony/typedarrays-every.js => es6/typedarray-every.js} (89%) create mode 100644 deps/v8/test/mjsunit/es6/typedarray-fill.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-find.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-findindex.js rename deps/v8/test/mjsunit/{harmony/typedarrays-foreach.js => es6/typedarray-foreach.js} (83%) create mode 100644 deps/v8/test/mjsunit/es6/typedarray-from.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-indexing.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-iteration.js rename deps/v8/test/mjsunit/{harmony/typedarrays-of.js => es6/typedarray-of.js} (99%) rename deps/v8/test/mjsunit/{harmony => es6}/typedarray-proto.js (97%) create mode 100644 deps/v8/test/mjsunit/es6/typedarray-reduce.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-reverse.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-slice.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-sort.js create mode 100644 deps/v8/test/mjsunit/es6/typedarray-tostring.js rename deps/v8/test/mjsunit/{harmony/typedarrays.js => es6/typedarray.js} (93%) delete mode 100644 deps/v8/test/mjsunit/external-array-no-sse2.js create mode 100644 deps/v8/test/mjsunit/function-bind-name.js create mode 100644 deps/v8/test/mjsunit/get-caller-js-function-throws.js create mode 100644 deps/v8/test/mjsunit/get-caller-js-function.js create mode 100644 deps/v8/test/mjsunit/global-hash.js create mode 100644 deps/v8/test/mjsunit/handle-count-ast.js create mode 100644 deps/v8/test/mjsunit/handle-count-runtime-literals.js create mode 100644 deps/v8/test/mjsunit/harmony/arrow-functions-this.js create mode 100644 deps/v8/test/mjsunit/harmony/arrow-rest-params.js create mode 100644 deps/v8/test/mjsunit/harmony/atomics.js create mode 100644 deps/v8/test/mjsunit/harmony/computed-property-names-deopt.js create mode 100644 deps/v8/test/mjsunit/harmony/destructuring-parameters-literalcount-nolazy.js create mode 100644 deps/v8/test/mjsunit/harmony/destructuring-parameters-literalcount.js create mode 100644 deps/v8/test/mjsunit/harmony/destructuring.js create mode 100644 deps/v8/test/mjsunit/harmony/new-target.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-4160.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-arrow-duplicate-params.js create mode 100644 deps/v8/test/mjsunit/harmony/sharedarraybuffer.js create mode 100644 deps/v8/test/mjsunit/harmony/spread-array.js create mode 100644 deps/v8/test/mjsunit/harmony/spread-call-super-property.js create mode 100644 deps/v8/test/mjsunit/has-own-property-evaluation-order.js create mode 100644 deps/v8/test/mjsunit/json-replacer-number-wrapper-tostring.js create mode 100644 deps/v8/test/mjsunit/json-replacer-order.js delete mode 100644 deps/v8/test/mjsunit/own-symbols.js create mode 100644 deps/v8/test/mjsunit/regexp-sort.js create mode 100644 deps/v8/test/mjsunit/regress/regress-3718.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4169.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4214.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4255-1.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4255-2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4255-3.js create mode 100644 deps/v8/test/mjsunit/regress/regress-4255-4.js create mode 100644 deps/v8/test/mjsunit/regress/regress-479528.js create mode 100644 deps/v8/test/mjsunit/regress/regress-489151.js create mode 100644 deps/v8/test/mjsunit/regress/regress-491481.js create mode 100644 deps/v8/test/mjsunit/regress/regress-491536.js create mode 100644 deps/v8/test/mjsunit/regress/regress-499790.js create mode 100644 deps/v8/test/mjsunit/regress/regress-500173.js create mode 100644 deps/v8/test/mjsunit/regress/regress-500176.js create mode 100644 deps/v8/test/mjsunit/regress/regress-500831.js create mode 100644 deps/v8/test/mjsunit/regress/regress-500980.js create mode 100644 deps/v8/test/mjsunit/regress/regress-503565.js create mode 100644 deps/v8/test/mjsunit/regress/regress-507980.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-binop-nosse2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-467180.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-471659.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-481896.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-482998.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-487105.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-487289.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-487608.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-489293.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-489597.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-489597.js-script create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-490680.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-491062.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-491943.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-492526.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-493284.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-493290.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-493568.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-493779.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-498022.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-498142.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-498811.js rename deps/v8/test/mjsunit/regress/{regress-crbug-514268.js => regress-crbug-500435.js} (74%) create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-500824.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-501711.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-501808.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-501809.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-503578.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-503698.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-503968.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-503991.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-504136.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-504727.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-504729.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-504787.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-505007-1.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-505007-2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-505354.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-505370.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-505778.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-506443.js create mode 100644 deps/v8/test/mjsunit/regress/regress-eval-context.js create mode 100644 deps/v8/test/mjsunit/regress/regress-existing-shared-function-info.js create mode 100644 deps/v8/test/mjsunit/regress/regress-osr-context.js create mode 100644 deps/v8/test/mjsunit/string-normalize.js create mode 100644 deps/v8/test/mjsunit/strong/function-arity.js create mode 100644 deps/v8/test/mjsunit/strong/implicit-conversions-constants.js create mode 100644 deps/v8/test/mjsunit/strong/implicit-conversions-count.js create mode 100644 deps/v8/test/mjsunit/strong/literals.js create mode 100644 deps/v8/test/mjsunit/strong/load-builtins.js create mode 100644 deps/v8/test/mjsunit/strong/load-element-mutate-backing-store.js create mode 100644 deps/v8/test/mjsunit/strong/load-element.js create mode 100644 deps/v8/test/mjsunit/strong/load-property-mutate-backing-store.js create mode 100644 deps/v8/test/mjsunit/strong/load-property.js create mode 100644 deps/v8/test/mjsunit/strong/load-proxy.js create mode 100644 deps/v8/test/mjsunit/strong/load-super.js create mode 100644 deps/v8/test/mjsunit/strong/object-delete.js create mode 100644 deps/v8/test/mjsunit/strong/object-freeze-property.js create mode 100644 deps/v8/test/mjsunit/strong/object-set-prototype.js create mode 100644 deps/v8/test/mjsunit/strong/super.js create mode 100644 deps/v8/test/mjsunit/third_party/object-keys/LICENSE rename deps/v8/test/mjsunit/third_party/{ => object-keys}/object-keys.js (100%) create mode 100644 deps/v8/test/mjsunit/third_party/regexp-pcre/LICENSE rename deps/v8/test/mjsunit/third_party/{ => regexp-pcre}/regexp-pcre.js (100%) create mode 100644 deps/v8/test/mjsunit/this-dynamic-lookup.js create mode 100644 deps/v8/test/mjsunit/unbox-double-field-indexed.js create mode 100644 deps/v8/test/mjsunit/unbox-double-field.js create mode 100644 deps/v8/test/mjsunit/unbox-smi-field-indexed.js create mode 100644 deps/v8/test/mjsunit/unbox-smi-field.js create mode 100644 deps/v8/test/mjsunit/undetectable-compare.js create mode 100644 deps/v8/test/mjsunit/undetectable.js create mode 100644 deps/v8/test/simdjs/SimdJs.json create mode 100755 deps/v8/test/simdjs/generate.py create mode 100644 deps/v8/test/simdjs/harness-adapt.js create mode 100644 deps/v8/test/simdjs/harness-finish.js create mode 100644 deps/v8/test/simdjs/simdjs.status create mode 100644 deps/v8/test/simdjs/testcfg.py delete mode 100644 deps/v8/test/unittests/compiler/control-reducer-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/graph-trimmer-unittest.cc create mode 100644 deps/v8/test/unittests/heap/heap-unittest.cc create mode 100644 deps/v8/test/unittests/heap/memory-reducer-unittest.cc delete mode 100644 deps/v8/testing/commit_queue/config.json create mode 100755 deps/v8/tools/gc-nvp-to-csv.py create mode 100644 deps/v8/tools/gc_nvp_common.py create mode 100755 deps/v8/tools/verify_source_deps.py diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index cc424333d31334..d0a859c12dacf9 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -60,6 +60,8 @@ shell_g /test/promises-aplus/promises-tests /test/promises-aplus/promises-tests.tar.gz /test/promises-aplus/sinon +/test/simdjs/ecmascript_simd* +/test/simdjs/data* /test/test262/data /test/test262/data.old /test/test262/tc39-test262-* diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index feaec2505e8359..059ee07086248d 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -52,7 +52,7 @@ config("internal_config") { include_dirs = [ "." ] - if (component_mode == "shared_library") { + if (is_component_build) { defines = [ "V8_SHARED", "BUILDING_V8_SHARED", @@ -202,8 +202,9 @@ action("js2c") { sources = [ "src/macros.py", - "src/messages.h", + "src/messages.h", "src/runtime.js", + "src/prologue.js", "src/v8natives.js", "src/symbol.js", "src/array.js", @@ -215,6 +216,7 @@ action("js2c") { "src/regexp.js", "src/arraybuffer.js", "src/typedarray.js", + "src/iterator-prototype.js", "src/generator.js", "src/object-observe.js", "src/collection.js", @@ -229,6 +231,8 @@ action("js2c") { "src/mirror-debugger.js", "src/liveedit-debugger.js", "src/templates.js", + "src/harmony-array.js", + "src/harmony-typedarray.js", ] outputs = [ @@ -264,17 +268,18 @@ action("js2c_experimental") { sources = [ "src/macros.py", - "src/messages.h", + "src/messages.h", "src/proxy.js", "src/generator.js", - "src/harmony-array.js", + "src/harmony-atomics.js", "src/harmony-array-includes.js", - "src/harmony-typedarray.js", + "src/harmony-concat-spreadable.js", "src/harmony-tostring.js", "src/harmony-regexp.js", "src/harmony-reflect.js", "src/harmony-spread.js", - "src/harmony-object.js" + "src/harmony-object.js", + "src/harmony-sharedarraybuffer.js" ] outputs = [ @@ -474,9 +479,13 @@ source_set("v8_snapshot") { ":js2c", ":js2c_experimental", ":js2c_extras", - ":run_mksnapshot", ":v8_base", ] + public_deps = [ + # This should be public so downstream targets can declare the snapshot + # output file as their inputs. + ":run_mksnapshot", + ] sources = [ "$target_gen_dir/libraries.cc", @@ -502,9 +511,11 @@ if (v8_use_external_startup_data) { ":js2c", ":js2c_experimental", ":js2c_extras", - ":run_mksnapshot", ":v8_base", + ] + public_deps = [ ":natives_blob", + ":run_mksnapshot", ] sources = [ @@ -526,6 +537,14 @@ source_set("v8_base") { visibility = [ ":*" ] # Only targets in this file can depend on this. sources = [ + "include/v8-debug.h", + "include/v8-platform.h", + "include/v8-profiler.h", + "include/v8-testing.h", + "include/v8-util.h", + "include/v8-version.h", + "include/v8.h", + "include/v8config.h", "src/accessors.cc", "src/accessors.h", "src/allocation.cc", @@ -544,6 +563,8 @@ source_set("v8_base") { "src/assembler.h", "src/assert-scope.h", "src/assert-scope.cc", + "src/ast-literal-reindexer.cc", + "src/ast-literal-reindexer.h", "src/ast-numbering.cc", "src/ast-numbering.h", "src/ast-value-factory.cc", @@ -602,6 +623,8 @@ source_set("v8_base") { "src/compiler/basic-block-instrumentor.h", "src/compiler/change-lowering.cc", "src/compiler/change-lowering.h", + "src/compiler/coalesced-live-ranges.cc", + "src/compiler/coalesced-live-ranges.h", "src/compiler/code-generator-impl.h", "src/compiler/code-generator.cc", "src/compiler/code-generator.h", @@ -617,8 +640,8 @@ source_set("v8_base") { "src/compiler/control-equivalence.h", "src/compiler/control-flow-optimizer.cc", "src/compiler/control-flow-optimizer.h", - "src/compiler/control-reducer.cc", - "src/compiler/control-reducer.h", + "src/compiler/dead-code-elimination.cc", + "src/compiler/dead-code-elimination.h", "src/compiler/diamond.h", "src/compiler/frame.h", "src/compiler/frame-elider.cc", @@ -632,10 +655,14 @@ source_set("v8_base") { "src/compiler/graph-reducer.h", "src/compiler/graph-replay.cc", "src/compiler/graph-replay.h", + "src/compiler/graph-trimmer.cc", + "src/compiler/graph-trimmer.h", "src/compiler/graph-visualizer.cc", "src/compiler/graph-visualizer.h", "src/compiler/graph.cc", "src/compiler/graph.h", + "src/compiler/greedy-allocator.cc", + "src/compiler/greedy-allocator.h", "src/compiler/instruction-codes.h", "src/compiler/instruction-selector-impl.h", "src/compiler/instruction-selector.cc", @@ -646,6 +673,8 @@ source_set("v8_base") { "src/compiler/js-builtin-reducer.h", "src/compiler/js-context-specialization.cc", "src/compiler/js-context-specialization.h", + "src/compiler/js-frame-specialization.cc", + "src/compiler/js-frame-specialization.h", "src/compiler/js-generic-lowering.cc", "src/compiler/js-generic-lowering.h", "src/compiler/js-graph.cc", @@ -774,6 +803,7 @@ source_set("v8_base") { "src/elements.h", "src/execution.cc", "src/execution.h", + "src/expression-classifier.h", "src/extensions/externalize-string-extension.cc", "src/extensions/externalize-string-extension.h", "src/extensions/free-buffer-extension.cc", @@ -830,6 +860,8 @@ source_set("v8_base") { "src/heap/mark-compact-inl.h", "src/heap/mark-compact.cc", "src/heap/mark-compact.h", + "src/heap/memory-reducer.cc", + "src/heap/memory-reducer.h", "src/heap/objects-visiting-inl.h", "src/heap/objects-visiting.cc", "src/heap/objects-visiting.h", @@ -958,12 +990,11 @@ source_set("v8_base") { "src/optimizing-compile-dispatcher.h", "src/ostreams.cc", "src/ostreams.h", + "src/pattern-rewriter.cc", "src/parser.cc", "src/parser.h", "src/pending-compilation-error-handler.cc", "src/pending-compilation-error-handler.h", - "src/perf-jit.cc", - "src/perf-jit.h", "src/preparse-data-format.h", "src/preparse-data.cc", "src/preparse-data.h", @@ -992,11 +1023,13 @@ source_set("v8_base") { "src/runtime-profiler.cc", "src/runtime-profiler.h", "src/runtime/runtime-array.cc", + "src/runtime/runtime-atomics.cc", "src/runtime/runtime-classes.cc", "src/runtime/runtime-collections.cc", "src/runtime/runtime-compiler.cc", "src/runtime/runtime-date.cc", "src/runtime/runtime-debug.cc", + "src/runtime/runtime-forin.cc", "src/runtime/runtime-function.cc", "src/runtime/runtime-generator.cc", "src/runtime/runtime-i18n.cc", @@ -1032,6 +1065,7 @@ source_set("v8_base") { "src/scopes.cc", "src/scopes.h", "src/signature.h", + "src/simulator.h", "src/small-pointer-list.h", "src/smart-pointers.h", "src/snapshot/natives.h", @@ -1040,6 +1074,8 @@ source_set("v8_base") { "src/snapshot/snapshot-common.cc", "src/snapshot/snapshot-source-sink.cc", "src/snapshot/snapshot-source-sink.h", + "src/splay-tree.h", + "src/splay-tree-inl.h", "src/snapshot/snapshot.h", "src/string-builder.cc", "src/string-builder.h", @@ -1089,6 +1125,8 @@ source_set("v8_base") { "src/vm-state.h", "src/zone.cc", "src/zone.h", + "src/zone-allocator.h", + "src/zone-containers.h", "src/third_party/fdlibm/fdlibm.cc", "src/third_party/fdlibm/fdlibm.h", ] @@ -1201,6 +1239,7 @@ source_set("v8_base") { "src/arm/regexp-macro-assembler-arm.cc", "src/arm/regexp-macro-assembler-arm.h", "src/arm/simulator-arm.cc", + "src/arm/simulator-arm.h", "src/compiler/arm/code-generator-arm.cc", "src/compiler/arm/instruction-codes-arm.h", "src/compiler/arm/instruction-selector-arm.cc", @@ -1295,6 +1334,7 @@ source_set("v8_base") { "src/mips/regexp-macro-assembler-mips.cc", "src/mips/regexp-macro-assembler-mips.h", "src/mips/simulator-mips.cc", + "src/mips/simulator-mips.h", "src/compiler/mips/code-generator-mips.cc", "src/compiler/mips/instruction-codes-mips.h", "src/compiler/mips/instruction-selector-mips.cc", @@ -1336,6 +1376,7 @@ source_set("v8_base") { "src/mips64/regexp-macro-assembler-mips64.cc", "src/mips64/regexp-macro-assembler-mips64.h", "src/mips64/simulator-mips64.cc", + "src/mips64/simulator-mips64.h", "src/ic/mips64/access-compiler-mips64.cc", "src/ic/mips64/handler-compiler-mips64.cc", "src/ic/mips64/ic-mips64.cc", @@ -1399,6 +1440,8 @@ source_set("v8_libbase") { "src/base/atomicops_internals_atomicword_compat.h", "src/base/atomicops_internals_mac.h", "src/base/atomicops_internals_mips_gcc.h", + "src/base/atomicops_internals_mips64_gcc.h", + "src/base/atomicops_internals_portable.h", "src/base/atomicops_internals_tsan.h", "src/base/atomicops_internals_x86_gcc.cc", "src/base/atomicops_internals_x86_gcc.h", @@ -1558,7 +1601,7 @@ if (current_toolchain == snapshot_toolchain) { # Public targets # -if (component_mode == "shared_library") { +if (is_component_build) { component("v8") { sources = [ "src/v8dll-main.cc", @@ -1567,11 +1610,17 @@ if (component_mode == "shared_library") { if (v8_use_snapshot && v8_use_external_startup_data) { deps = [ ":v8_base", + ] + public_deps = [ ":v8_external_snapshot", ] } else if (v8_use_snapshot) { deps = [ ":v8_base", + ] + # v8_snapshot should be public so downstream targets can declare the + # snapshot file as their input. + public_deps = [ ":v8_snapshot", ] } else { @@ -1607,6 +1656,8 @@ if (component_mode == "shared_library") { } else if (v8_use_snapshot) { deps = [ ":v8_base", + ] + public_deps = [ ":v8_snapshot", ] } else { @@ -1657,9 +1708,10 @@ if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") || sources += [ "src/d8-windows.cc" ] } - if (component_mode != "shared_library") { + if (!is_component_build) { sources += [ "src/d8-debug.cc", + "src/d8-debug.h", "$target_gen_dir/d8-js.cc", ] } diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index c665f1763eb431..e8ce91563387b5 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,678 @@ +2015-07-08: Version 4.5.103 + + Performance and stability improvements on all platforms. + + +2015-07-08: Version 4.5.102 + + Performance and stability improvements on all platforms. + + +2015-07-07: Version 4.5.101 + + Move compatible receiver check from CompileHandler to UpdateCaches + (Chromium issue 505374). + + Performance and stability improvements on all platforms. + + +2015-07-07: Version 4.5.100 + + Performance and stability improvements on all platforms. + + +2015-07-07: Version 4.5.99 + + unicode-decoder: fix out-of-band write in utf16 (issue 4274). + + Performance and stability improvements on all platforms. + + +2015-07-06: Version 4.5.98 + + Performance and stability improvements on all platforms. + + +2015-07-04: Version 4.5.97 + + Performance and stability improvements on all platforms. + + +2015-07-03: Version 4.5.96 + + Performance and stability improvements on all platforms. + + +2015-07-03: Version 4.5.95 + + Performance and stability improvements on all platforms. + + +2015-07-02: Version 4.5.94 + + Performance and stability improvements on all platforms. + + +2015-07-02: Version 4.5.93 + + Include Harmony Array/TypedArray methods unconditionally (Chromium issue + 504629). + + Performance and stability improvements on all platforms. + + +2015-07-02: Version 4.5.92 + + Performance and stability improvements on all platforms. + + +2015-07-01: Version 4.5.91 + + Performance and stability improvements on all platforms. + + +2015-07-01: Version 4.5.90 + + Performance and stability improvements on all platforms. + + +2015-07-01: Version 4.5.89 + + Performance and stability improvements on all platforms. + + +2015-06-30: Version 4.5.88 + + Performance and stability improvements on all platforms. + + +2015-06-30: Version 4.5.87 + + Performance and stability improvements on all platforms. + + +2015-06-30: Version 4.5.86 + + Ensure mjsunit tests use dashes not underscores in flags directives + (Chromium issue 505228). + + Performance and stability improvements on all platforms. + + +2015-06-29: Version 4.5.85 + + Fix flag convention in handle count tests and comment (Chromium issue + 505228). + + Performance and stability improvements on all platforms. + + +2015-06-29: Version 4.5.84 + + Performance and stability improvements on all platforms. + + +2015-06-27: Version 4.5.83 + + Performance and stability improvements on all platforms. + + +2015-06-26: Version 4.5.82 + + Performance and stability improvements on all platforms. + + +2015-06-26: Version 4.5.81 + + Remove obsolete options in ScriptCompiler::CompileOptions (Chromium + issue 399580). + + Performance and stability improvements on all platforms. + + +2015-06-25: Version 4.5.80 + + Performance and stability improvements on all platforms. + + +2015-06-25: Version 4.5.79 + + Performance and stability improvements on all platforms. + + +2015-06-25: Version 4.5.78 + + Serializer: clear next link in weak cells (Chromium issue 503552). + + Performance and stability improvements on all platforms. + + +2015-06-24: Version 4.5.77 + + Performance and stability improvements on all platforms. + + +2015-06-24: Version 4.5.76 + + Performance and stability improvements on all platforms. + + +2015-06-24: Version 4.5.75 + + Date() should not depend on Date.prototype.toString (issue 4225). + + Performance and stability improvements on all platforms. + + +2015-06-23: Version 4.5.74 + + Expose Map/Set methods through the API (issue 3340). + + [turbofan] NaN is never truish (issue 4207). + + Performance and stability improvements on all platforms. + + +2015-06-23: Version 4.5.73 + + Re-ship Harmony Array/TypedArray methods (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-06-23: Version 4.5.72 + + Performance and stability improvements on all platforms. + + +2015-06-23: Version 4.5.71 + + Performance and stability improvements on all platforms. + + +2015-06-20: Version 4.5.70 + + Ship Harmony Array/TypedArray methods (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-06-20: Version 4.5.69 + + Ship arrow functions (issue 2700). + + Performance and stability improvements on all platforms. + + +2015-06-19: Version 4.5.68 + + Performance and stability improvements on all platforms. + + +2015-06-19: Version 4.5.67 + + Performance and stability improvements on all platforms. + + +2015-06-19: Version 4.5.66 + + Ship arrow functions (issue 2700). + + Performance and stability improvements on all platforms. + + +2015-06-18: Version 4.5.65 + + Performance and stability improvements on all platforms. + + +2015-06-18: Version 4.5.64 + + Performance and stability improvements on all platforms. + + +2015-06-18: Version 4.5.63 + + Performance and stability improvements on all platforms. + + +2015-06-17: Version 4.5.62 + + Hydrogen object literals: always initialize in-object properties + (Chromium issue 500497). + + Performance and stability improvements on all platforms. + + +2015-06-17: Version 4.5.61 + + Add %TypedArray% to proto chain (issue 4085). + + Performance and stability improvements on all platforms. + + +2015-06-17: Version 4.5.60 + + Performance and stability improvements on all platforms. + + +2015-06-17: Version 4.5.59 + + [crankshaft] Fix wrong bailout points in for-in loop body (Chromium + issue 500435). + + Performance and stability improvements on all platforms. + + +2015-06-16: Version 4.5.58 + + Performance and stability improvements on all platforms. + + +2015-06-16: Version 4.5.57 + + Inline code generation for %_IsTypedArray (issue 4085). + + Allow TypedArrays to be initialized with iterables (issue 4090). + + Performance and stability improvements on all platforms. + + +2015-06-15: Version 4.5.56 + + Performance and stability improvements on all platforms. + + +2015-06-15: Version 4.5.55 + + Performance and stability improvements on all platforms. + + +2015-06-14: Version 4.5.54 + + Performance and stability improvements on all platforms. + + +2015-06-13: Version 4.5.53 + + Performance and stability improvements on all platforms. + + +2015-06-12: Version 4.5.52 + + Map::TryUpdate() must be in sync with Map::Update() (issue 4173). + + Add ToObject call in Array.prototype.sort (issue 4125). + + In Array.of and Array.from, fall back to DefineOwnProperty (issue 4168). + + Performance and stability improvements on all platforms. + + +2015-06-12: Version 4.5.51 + + Performance and stability improvements on all platforms. + + +2015-06-11: Version 4.5.50 + + Performance and stability improvements on all platforms. + + +2015-06-11: Version 4.5.49 + + Performance and stability improvements on all platforms. + + +2015-06-11: Version 4.5.48 + + Support rest parameters in arrow functions (issue 2700). + + Performance and stability improvements on all platforms. + + +2015-06-10: Version 4.5.47 + + Implement %TypedArray%.prototype.slice (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-06-09: Version 4.5.46 + + Stage ES6 arrow functions (issue 2700). + + Performance and stability improvements on all platforms. + + +2015-06-09: Version 4.5.45 + + Performance and stability improvements on all platforms. + + +2015-06-09: Version 4.5.44 + + Performance and stability improvements on all platforms. + + +2015-06-08: Version 4.5.43 + + [for-in] Make ForInNext and ForInFilter deal properly with exceptions + (Chromium issue 496331). + + Performance and stability improvements on all platforms. + + +2015-06-08: Version 4.5.42 + + Performance and stability improvements on all platforms. + + +2015-06-06: Version 4.5.41 + + Performance and stability improvements on all platforms. + + +2015-06-05: Version 4.5.40 + + Performance and stability improvements on all platforms. + + +2015-06-05: Version 4.5.39 + + Stage ES6 Array and TypedArray methods (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-06-05: Version 4.5.38 + + Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578). + + Add support for Embedded Constant Pools for PPC and Arm (Chromium issue + 478811). + + Performance and stability improvements on all platforms. + + +2015-06-04: Version 4.5.37 + + Performance and stability improvements on all platforms. + + +2015-06-04: Version 4.5.36 + + Performance and stability improvements on all platforms. + + +2015-06-04: Version 4.5.35 + + Flatten the Arrays returned and consumed by the v8::Map API (Chromium + issue 478263). + + Performance and stability improvements on all platforms. + + +2015-06-03: Version 4.5.34 + + Also allocate small typed arrays on heap when initialized from an array- + like (issue 3996). + + Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-06-03: Version 4.5.33 + + Add support for Embedded Constant Pools for PPC and Arm (Chromium issue + 478811). + + Implement %TypedArray%.prototype.{toString,toLocaleString,join} (issue + 3578). + + Performance and stability improvements on all platforms. + + +2015-06-03: Version 4.5.32 + + Performance and stability improvements on all platforms. + + +2015-06-02: Version 4.5.31 + + Performance and stability improvements on all platforms. + + +2015-06-02: Version 4.5.30 + + Performance and stability improvements on all platforms. + + +2015-06-01: Version 4.5.29 + + Reland "Re-enable on-heap typed array allocation" (issue 3996). + + Performance and stability improvements on all platforms. + + +2015-06-01: Version 4.5.28 + + Re-enable on-heap typed array allocation (issue 3996). + + Also expose DefineOwnProperty (Chromium issue 475206). + + Performance and stability improvements on all platforms. + + +2015-06-01: Version 4.5.27 + + Performance and stability improvements on all platforms. + + +2015-05-31: Version 4.5.26 + + Performance and stability improvements on all platforms. + + +2015-05-30: Version 4.5.25 + + Performance and stability improvements on all platforms. + + +2015-05-29: Version 4.5.24 + + Debugger: consider try-finally scopes not catching wrt debug events + (Chromium issue 492522). + + Performance and stability improvements on all platforms. + + +2015-05-29: Version 4.5.23 + + Performance and stability improvements on all platforms. + + +2015-05-29: Version 4.5.22 + + Do not eagerly convert exception to string when creating a message + object (Chromium issue 490680). + + Performance and stability improvements on all platforms. + + +2015-05-28: Version 4.5.21 + + Performance and stability improvements on all platforms. + + +2015-05-28: Version 4.5.20 + + Introduce v8::Object::CreateDataProperty (Chromium issue 475206). + + Performance and stability improvements on all platforms. + + +2015-05-27: Version 4.5.19 + + Performance and stability improvements on all platforms. + + +2015-05-27: Version 4.5.18 + + Add {Map,Set}::FromArray to the API (issue 3340). + + Add {Map,Set}::AsArray to the API (issue 3340). + + Add basic API support for Map & Set (issue 3340). + + Performance and stability improvements on all platforms. + + +2015-05-26: Version 4.5.17 + + Correctly hook up materialized receiver into the evaluation context + chain (Chromium issue 491943). + + Implement bookmarks for ExternalStreamingStream (Chromium issue 470930). + + Performance and stability improvements on all platforms. + + +2015-05-26: Version 4.5.16 + + Performance and stability improvements on all platforms. + + +2015-05-26: Version 4.5.15 + + Performance and stability improvements on all platforms. + + +2015-05-23: Version 4.5.14 + + Performance and stability improvements on all platforms. + + +2015-05-22: Version 4.5.13 + + Remove v8::Private. + + Performance and stability improvements on all platforms. + + +2015-05-22: Version 4.5.12 + + Performance and stability improvements on all platforms. + + +2015-05-22: Version 4.5.11 + + Performance and stability improvements on all platforms. + + +2015-05-21: Version 4.5.10 + + Re-land %TypedArray%.prototype.{map,filter,some} (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-05-21: Version 4.5.9 + + Performance and stability improvements on all platforms. + + +2015-05-20: Version 4.5.8 + + Performance and stability improvements on all platforms. + + +2015-05-20: Version 4.5.7 + + Implement %TypedArray%.{lastI,i}ndexOf (issue 3578). + + Implement %TypedArray%.prototype.sort (issue 3578). + + Implement %TypedArray%.reverse (issue 3578). + + Implement %TypedArray%.prototype.{map,filter,some,reduce,reduceRight} + (issue 3578). + + Fix has_pending_exception logic in API's Array::CloneElementAt (issue + 4103). + + Adding api to get last gc object statistics for chrome://tracing + (Chromium issue 476013). + + Fix harmless HGraph verification failure after hoisting inlined bounds + checks (Chromium issue 487608). + + Performance and stability improvements on all platforms. + + +2015-05-20: Version 4.5.6 + + Add TypedArray.from method (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-05-19: Version 4.5.5 + + ARM64: Propagate notification about aborted compilation from + RegExpEngine to MacroAssembler (Chromium issue 489290). + + Performance and stability improvements on all platforms. + + +2015-05-18: Version 4.5.4 + + Performance and stability improvements on all platforms. + + +2015-05-18: Version 4.5.3 + + Performance and stability improvements on all platforms. + + +2015-05-17: Version 4.5.2 + + Performance and stability improvements on all platforms. + + +2015-05-16: Version 4.5.1 + + Test that TypedArray methods don't read length (issue 3578). + + Implement %TypedArray%.{fill,find,findIndex} (issue 3578). + + TypedArray.prototype.copyWithin method (issue 3578). + + Provide accessor for object internal properties that doesn't require + debugger to be active (Chromium issue 481845). + + Don't create debug context if debug listener is not set (Chromium issue + 482290). + + Performance and stability improvements on all platforms. + + +2015-05-13: Version 4.4.65 + + Deprecate Isolate::New. + + Factor out core of Array.forEach and .every, for use in TypedArrays + (issue 3578). + + Performance and stability improvements on all platforms. + + +2015-05-12: Version 4.4.64 + + Performance and stability improvements on all platforms. + + 2015-05-11: Version 4.4.63 Let Runtime_GrowArrayElements accept non-Smi numbers as |key| (Chromium diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 711cc53b7e3574..689ae778bb59a4 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -8,23 +8,23 @@ vars = { deps = { "v8/build/gyp": - Var("git_url") + "/external/gyp.git" + "@" + "0bb67471bca068996e15b56738fa4824dfa19de0", + Var("git_url") + "/external/gyp.git" + "@" + "5122240c5e5c4d8da12c543d82b03d6089eb77c5", "v8/third_party/icu": - Var("git_url") + "/chromium/deps/icu.git" + "@" + "f8c0e585b0a046d83d72b5d37356cb50d5b2031a", + Var("git_url") + "/chromium/deps/icu.git" + "@" + "c81a1a3989c3b66fa323e9a6ee7418d7c08297af", "v8/buildtools": - Var("git_url") + "/chromium/buildtools.git" + "@" + "b0ede9c89f9d5fbe5387d961ad4c0ec665b6c821", + Var("git_url") + "/chromium/buildtools.git" + "@" + "ecc8e253abac3b6186a97573871a084f4c0ca3ae", "v8/testing/gtest": - Var("git_url") + "/external/googletest.git" + "@" + "be1868139ffe0ccd0e8e3b37292b84c821d9c8ad", + Var("git_url") + "/external/googletest.git" + "@" + "23574bf2333f834ff665f894c97bef8a5b33a0a9", "v8/testing/gmock": Var("git_url") + "/external/googlemock.git" + "@" + "29763965ab52f24565299976b936d1265cb6a271", # from svn revision 501 "v8/tools/clang": - Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "5bab78c6ced45a71a8e095a09697ca80492e57e1", + Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "73ec8804ed395b0886d6edf82a9f33583f4a7902", } deps_os = { "android": { "v8/third_party/android_tools": - Var("git_url") + "/android_tools.git" + "@" + "4f723e2a5fa5b7b8a198072ac19b92344be2b271", + Var("git_url") + "/android_tools.git" + "@" + "21f4bcbd6cd927e4b4227cfde7d5f13486be1236", }, "win": { "v8/third_party/cygwin": diff --git a/deps/v8/LICENSE b/deps/v8/LICENSE index 2f5bce83697d0f..1ffa949c6c1dfb 100644 --- a/deps/v8/LICENSE +++ b/deps/v8/LICENSE @@ -3,12 +3,12 @@ maintained libraries. The externally maintained libraries used by V8 are: - PCRE test suite, located in - test/mjsunit/third_party/regexp-pcre.js. This is based on the + test/mjsunit/third_party/regexp-pcre/regexp-pcre.js. This is based on the test suite from PCRE-7.3, which is copyrighted by the University of Cambridge and Google, Inc. The copyright notice and license are embedded in regexp-pcre.js. - - Layout tests, located in test/mjsunit/third_party. These are + - Layout tests, located in test/mjsunit/third_party/object-keys. These are based on layout tests from webkit.org which are copyrighted by Apple Computer, Inc. and released under a 3-clause BSD license. @@ -26,6 +26,9 @@ are: These libraries have their own licenses; we recommend you read them, as their terms may differ from the terms below. +Further license information can be found in LICENSE files located in +sub-directories. + Copyright 2014, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/deps/v8/Makefile b/deps/v8/Makefile index db6cf3b7da534a..97612655a7b1ae 100644 --- a/deps/v8/Makefile +++ b/deps/v8/Makefile @@ -31,9 +31,7 @@ OUTDIR ?= out TESTJOBS ?= GYPFLAGS ?= TESTFLAGS ?= -ANDROID_NDK_ROOT ?= ANDROID_NDK_HOST_ARCH ?= -ANDROID_TOOLCHAIN ?= ANDROID_V8 ?= /data/local/tmp/v8 NACL_SDK_ROOT ?= @@ -145,10 +143,14 @@ ifeq ($(i18nsupport), off) GYPFLAGS += -Dv8_enable_i18n_support=0 TESTFLAGS += --noi18n endif -# deprecation_warnings=on +# deprecationwarnings=on ifeq ($(deprecationwarnings), on) GYPFLAGS += -Dv8_deprecation_warnings=1 endif +# imminentdeprecationwarnings=on +ifeq ($(imminentdeprecationwarnings), on) + GYPFLAGS += -Dv8_imminent_deprecation_warnings=1 +endif # asan=on ifeq ($(asan), on) GYPFLAGS += -Dasan=1 -Dclang=1 @@ -246,7 +248,7 @@ NACL_ARCHES = nacl_ia32 nacl_x64 GYPFILES = third_party/icu/icu.gypi third_party/icu/icu.gyp \ build/shim_headers.gypi build/features.gypi build/standalone.gypi \ build/toolchain.gypi build/all.gyp build/mac/asan.gyp \ - build/android.gypi test/cctest/cctest.gyp \ + test/cctest/cctest.gyp \ test/unittests/unittests.gyp tools/gyp/v8.gyp \ tools/parser-shell.gyp testing/gmock.gyp testing/gtest.gyp \ buildtools/third_party/libc++abi/libc++abi.gyp \ @@ -277,7 +279,6 @@ ENVFILE = $(OUTDIR)/environment $(ARCHES) $(MODES) $(BUILDS) $(CHECKS) $(addsuffix .clean,$(ARCHES)) \ $(addsuffix .check,$(MODES)) $(addsuffix .check,$(ARCHES)) \ $(ANDROID_ARCHES) $(ANDROID_BUILDS) $(ANDROID_CHECKS) \ - must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN \ $(NACL_ARCHES) $(NACL_BUILDS) $(NACL_CHECKS) \ must-set-NACL_SDK_ROOT @@ -311,8 +312,7 @@ native: $(OUTDIR)/Makefile.native $(ANDROID_ARCHES): $(addprefix $$@.,$(MODES)) -$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) build/android.gypi \ - must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN Makefile.android +$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) Makefile.android @$(MAKE) -f Makefile.android $@ \ ARCH="$(basename $@)" \ MODE="$(subst .,,$(suffix $@))" \ @@ -448,13 +448,6 @@ $(OUTDIR)/Makefile.native: $(GYPFILES) $(ENVFILE) build/gyp/gyp --generator-output="$(OUTDIR)" build/all.gyp \ -Ibuild/standalone.gypi --depth=. -S.native $(GYPFLAGS) -must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN: -ifndef ANDROID_NDK_ROOT -ifndef ANDROID_TOOLCHAIN - $(error ANDROID_NDK_ROOT or ANDROID_TOOLCHAIN must be set)) -endif -endif - # Note that NACL_SDK_ROOT must be set to point to an appropriate # Native Client SDK before using this makefile. You can download # an SDK here: diff --git a/deps/v8/Makefile.android b/deps/v8/Makefile.android index f89fd21fda004e..c49cb85b9b6514 100644 --- a/deps/v8/Makefile.android +++ b/deps/v8/Makefile.android @@ -35,75 +35,28 @@ MODES = release debug ANDROID_BUILDS = $(foreach mode,$(MODES), \ $(addsuffix .$(mode),$(ANDROID_ARCHES))) -HOST_OS = $(shell uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/') -ANDROID_NDK_HOST_ARCH ?= $(shell uname -m | sed -e 's/i[3456]86/x86/') -ifeq ($(HOST_OS), linux) - TOOLCHAIN_DIR = linux-$(ANDROID_NDK_HOST_ARCH) -else ifeq ($(HOST_OS), mac) - TOOLCHAIN_DIR = darwin-$(ANDROID_NDK_HOST_ARCH) -else - $(error Host platform "${HOST_OS}" is not supported) -endif - ifeq ($(ARCH), android_arm) - DEFINES = target_arch=arm v8_target_arch=arm android_target_arch=arm android_target_platform=14 - DEFINES += arm_neon=0 arm_version=7 - TOOLCHAIN_ARCH = arm-linux-androideabi - TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH) - TOOLCHAIN_VER = 4.8 + DEFINES = target_arch=arm v8_target_arch=arm else ifeq ($(ARCH), android_arm64) - DEFINES = target_arch=arm64 v8_target_arch=arm64 android_target_arch=arm64 android_target_platform=21 - TOOLCHAIN_ARCH = aarch64-linux-android - TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH) - TOOLCHAIN_VER = 4.9 + DEFINES = target_arch=arm64 v8_target_arch=arm64 else ifeq ($(ARCH), android_mipsel) - DEFINES = target_arch=mipsel v8_target_arch=mipsel android_target_platform=14 - DEFINES += android_target_arch=mips mips_arch_variant=mips32r2 - TOOLCHAIN_ARCH = mipsel-linux-android - TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH) - TOOLCHAIN_VER = 4.8 + DEFINES = target_arch=mipsel v8_target_arch=mipsel else ifeq ($(ARCH), android_ia32) - DEFINES = target_arch=ia32 v8_target_arch=ia32 android_target_arch=x86 android_target_platform=14 - TOOLCHAIN_ARCH = x86 - TOOLCHAIN_PREFIX = i686-linux-android - TOOLCHAIN_VER = 4.8 + DEFINES = target_arch=ia32 v8_target_arch=ia32 else ifeq ($(ARCH), android_x64) - DEFINES = target_arch=x64 v8_target_arch=x64 android_target_arch=x86_64 android_target_platform=21 - TOOLCHAIN_ARCH = x86_64 - TOOLCHAIN_PREFIX = x86_64-linux-android - TOOLCHAIN_VER = 4.9 + DEFINES = target_arch=x64 v8_target_arch=x64 else ifeq ($(ARCH), android_x87) - DEFINES = target_arch=x87 v8_target_arch=x87 android_target_arch=x86 android_target_platform=14 - TOOLCHAIN_ARCH = x86 - TOOLCHAIN_PREFIX = i686-linux-android - TOOLCHAIN_VER = 4.8 + DEFINES = target_arch=ia32 v8_target_arch=x87 else $(error Target architecture "${ARCH}" is not supported) endif -TOOLCHAIN_PATH = \ - ${ANDROID_NDK_ROOT}/toolchains/${TOOLCHAIN_ARCH}-${TOOLCHAIN_VER}/prebuilt -ANDROID_TOOLCHAIN ?= ${TOOLCHAIN_PATH}/${TOOLCHAIN_DIR} - -ifeq ($(wildcard $(ANDROID_TOOLCHAIN)),) - $(error Cannot find Android toolchain in "${ANDROID_TOOLCHAIN}". Please \ - check that ANDROID_NDK_ROOT and ANDROID_NDK_HOST_ARCH are set \ - correctly) -endif - -# For mksnapshot host generation. -DEFINES += host_os=${HOST_OS} +# Common flags. DEFINES += OS=android .SECONDEXPANSION: $(ANDROID_BUILDS): $(OUTDIR)/Makefile.$$@ @$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \ - CXX="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \ - AR="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ar" \ - RANLIB="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ranlib" \ - CC="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-gcc" \ - LD="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ld" \ - LINK="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \ BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \ python -c "print raw_input().capitalize()") \ builddir="$(shell pwd)/$(OUTDIR)/$@" @@ -113,9 +66,7 @@ ANDROID_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(ANDROID_BUILDS)) $(ANDROID_MAKEFILES): GYP_GENERATORS=make-android \ GYP_DEFINES="${DEFINES}" \ - CC="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-gcc" \ - CXX="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-g++" \ PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/build:$(PYTHONPATH)" \ build/gyp/gyp --generator-output="${OUTDIR}" build/all.gyp \ - -Ibuild/standalone.gypi --depth=. -Ibuild/android.gypi \ + -Ibuild/standalone.gypi --depth=. \ -S$(suffix $(basename $@))$(suffix $@) ${GYPFLAGS} diff --git a/deps/v8/build/android.gypi b/deps/v8/build/android.gypi deleted file mode 100644 index 7bbf12eed6d99b..00000000000000 --- a/deps/v8/build/android.gypi +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Definitions for building standalone V8 binaries to run on Android. -# This is mostly excerpted from: -# http://src.chromium.org/viewvc/chrome/trunk/src/build/common.gypi - -{ - 'variables': { - # Location of Android NDK. - 'variables': { - 'android_ndk_root%': ' GetExecutionState() const = 0; - virtual Handle GetEventData() const = 0; + virtual Local GetExecutionState() const = 0; + virtual Local GetEventData() const = 0; /** * Get the debugger protocol JSON. */ - virtual Handle GetJSON() const = 0; + virtual Local GetJSON() const = 0; /** * Get the context active when the debug event happened. Note this is not * the current active context as the JavaScript part of the debugger is * running in its own context which is entered at this point. */ - virtual Handle GetEventContext() const = 0; + virtual Local GetEventContext() const = 0; /** * Client data passed with the corresponding request if any. This is the @@ -104,21 +104,21 @@ class V8_EXPORT Debug { * Access to execution state and event data of the debug event. Don't store * these cross callbacks as their content becomes invalid. */ - virtual Handle GetExecutionState() const = 0; - virtual Handle GetEventData() const = 0; + virtual Local GetExecutionState() const = 0; + virtual Local GetEventData() const = 0; /** * Get the context active when the debug event happened. Note this is not * the current active context as the JavaScript part of the debugger is * running in its own context which is entered at this point. */ - virtual Handle GetEventContext() const = 0; + virtual Local GetEventContext() const = 0; /** * Client data passed with the corresponding callback when it was * registered. */ - virtual Handle GetCallbackData() const = 0; + virtual Local GetCallbackData() const = 0; /** * Client data passed to DebugBreakForCommand function. The @@ -156,7 +156,7 @@ class V8_EXPORT Debug { typedef void (*DebugMessageDispatchHandler)(); static bool SetDebugEventListener(EventCallback that, - Handle data = Handle()); + Local data = Local()); // Schedule a debugger break to happen when JavaScript code is run // in the given isolate. @@ -196,20 +196,20 @@ class V8_EXPORT Debug { */ static V8_DEPRECATE_SOON( "Use maybe version", - Local Call(v8::Handle fun, - Handle data = Handle())); + Local Call(v8::Local fun, + Local data = Local())); // TODO(dcarney): data arg should be a MaybeLocal static MaybeLocal Call(Local context, - v8::Handle fun, - Handle data = Handle()); + v8::Local fun, + Local data = Local()); /** * Returns a mirror object for the given object. */ static V8_DEPRECATE_SOON("Use maybe version", - Local GetMirror(v8::Handle obj)); + Local GetMirror(v8::Local obj)); static MaybeLocal GetMirror(Local context, - v8::Handle obj); + v8::Local obj); /** * Makes V8 process all pending debug messages. @@ -248,7 +248,8 @@ class V8_EXPORT Debug { * Debugger is running in its own context which is entered while debugger * messages are being dispatched. This is an explicit getter for this * debugger context. Note that the content of the debugger context is subject - * to change. + * to change. The Context exists only when the debugger is active, i.e. at + * least one DebugEventListener or MessageHandler is set. */ static Local GetDebugContext(); @@ -259,6 +260,14 @@ class V8_EXPORT Debug { * unexpectedly used. LiveEdit is enabled by default. */ static void SetLiveEditEnabled(Isolate* isolate, bool enable); + + /** + * Returns array of internal properties specific to the value type. Result has + * the following format: [, ,...,, ]. Result array + * will be allocated in the current context. + */ + static MaybeLocal GetInternalProperties(Isolate* isolate, + Local value); }; diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 67fb384c99ba52..be9e5c0c6b46ed 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -56,6 +56,17 @@ class Platform { */ virtual void CallOnForegroundThread(Isolate* isolate, Task* task) = 0; + /** + * Schedules a task to be invoked on a foreground thread wrt a specific + * |isolate| after the given number of seconds |delay_in_seconds|. + * Tasks posted for the same isolate should be execute in order of + * scheduling. The definition of "foreground" is opaque to V8. + */ + virtual void CallDelayedOnForegroundThread(Isolate* isolate, Task* task, + double delay_in_seconds) { + // TODO(ulan): Make this function abstract after V8 roll in Chromium. + } + /** * Monotonically increasing time in seconds from an arbitrary fixed point in * the past. This function is expected to return at least diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 82a14d66003001..121e8030a140d7 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -60,13 +60,13 @@ class V8_EXPORT CpuProfileNode { }; /** Returns function name (empty string for anonymous functions.) */ - Handle GetFunctionName() const; + Local GetFunctionName() const; /** Returns id of the script where function is located. */ int GetScriptId() const; /** Returns resource name for script from where the function originates. */ - Handle GetScriptResourceName() const; + Local GetScriptResourceName() const; /** * Returns the number, 1-based, of the line where the function originates. @@ -129,7 +129,7 @@ class V8_EXPORT CpuProfileNode { class V8_EXPORT CpuProfile { public: /** Returns CPU profile title. */ - Handle GetTitle() const; + Local GetTitle() const; /** Returns the root node of the top down call tree. */ const CpuProfileNode* GetTopDownRoot() const; @@ -198,13 +198,13 @@ class V8_EXPORT CpuProfiler { * |record_samples| parameter controls whether individual samples should * be recorded in addition to the aggregated tree. */ - void StartProfiling(Handle title, bool record_samples = false); + void StartProfiling(Local title, bool record_samples = false); /** * Stops collecting CPU profile with a given title and returns it. * If the title given is empty, finishes the last profile started. */ - CpuProfile* StopProfiling(Handle title); + CpuProfile* StopProfiling(Local title); /** * Tells the profiler whether the embedder is idle. @@ -246,7 +246,7 @@ class V8_EXPORT HeapGraphEdge { * Returns edge name. This can be a variable name, an element index, or * a property name. */ - Handle GetName() const; + Local GetName() const; /** Returns origin node. */ const HeapGraphNode* GetFromNode() const; @@ -275,7 +275,8 @@ class V8_EXPORT HeapGraphNode { // snapshot items together. kConsString = 10, // Concatenated string. A pair of pointers to strings. kSlicedString = 11, // Sliced string. A fragment of another string. - kSymbol = 12 // A Symbol (ES6). + kSymbol = 12, // A Symbol (ES6). + kSimdValue = 13 // A SIMD value stored in the heap (Proposed ES7). }; /** Returns node type (see HeapGraphNode::Type). */ @@ -286,7 +287,7 @@ class V8_EXPORT HeapGraphNode { * of the constructor (for objects), the name of the function (for * closures), string value, or an empty string (for compiled code). */ - Handle GetName() const; + Local GetName() const; /** * Returns node id. For the same heap object, the id remains the same @@ -429,8 +430,8 @@ class V8_EXPORT HeapProfiler { * while the callback is running: only getters on the handle and * GetPointerFromInternalField on the objects are allowed. */ - typedef RetainedObjectInfo* (*WrapperInfoCallback) - (uint16_t class_id, Handle wrapper); + typedef RetainedObjectInfo* (*WrapperInfoCallback)(uint16_t class_id, + Local wrapper); /** Returns the number of snapshots taken. */ int GetSnapshotCount(); @@ -442,13 +443,13 @@ class V8_EXPORT HeapProfiler { * Returns SnapshotObjectId for a heap object referenced by |value| if * it has been seen by the heap profiler, kUnknownObjectId otherwise. */ - SnapshotObjectId GetObjectId(Handle value); + SnapshotObjectId GetObjectId(Local value); /** * Returns heap object with given SnapshotObjectId if the object is alive, * otherwise empty handle is returned. */ - Handle FindObjectById(SnapshotObjectId id); + Local FindObjectById(SnapshotObjectId id); /** * Clears internal map from SnapshotObjectId to heap object. The new objects @@ -473,7 +474,8 @@ class V8_EXPORT HeapProfiler { * Returns name to be used in the heap snapshot for given node. Returned * string must stay alive until snapshot collection is completed. */ - virtual const char* GetName(Handle object) = 0; + virtual const char* GetName(Local object) = 0; + protected: virtual ~ObjectNameResolver() {} }; diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 180969f1161e78..f6f62d736a373b 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 4 -#define V8_MINOR_VERSION 4 -#define V8_BUILD_NUMBER 63 -#define V8_PATCH_LEVEL 30 +#define V8_MINOR_VERSION 5 +#define V8_BUILD_NUMBER 103 +#define V8_PATCH_LEVEL 24 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 910279b52e6b29..6e1db3a581f5c7 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -94,6 +94,7 @@ class Primitive; class Promise; class RawOperationDescriptor; class Script; +class SharedArrayBuffer; class Signature; class StartupData; class StackFrame; @@ -102,7 +103,6 @@ class String; class StringObject; class Symbol; class SymbolObject; -class Private; class Uint32; class Utils; class Value; @@ -215,8 +215,8 @@ class Local { : val_(reinterpret_cast(*that)) { /** * This check fails when trying to convert between incompatible - * handles. For example, converting from a Handle to a - * Handle. + * handles. For example, converting from a Local to a + * Local. */ TYPE_CHECK(T, S); } @@ -311,7 +311,6 @@ class Local { friend class String; friend class Object; friend class Context; - friend class Private; template friend class internal::CustomArguments; friend Local Undefined(Isolate* isolate); friend Local Null(Isolate* isolate); @@ -331,9 +330,11 @@ class Local { }; -// Handle is an alias for Local for historical reasons. +#if !defined(V8_IMMINENT_DEPRECATION_WARNINGS) +// Local is an alias for Local for historical reasons. template using Handle = Local; +#endif /** @@ -418,11 +419,11 @@ class WeakCallbackInfo { V8_INLINE void* GetInternalField(int index) const; V8_INLINE V8_DEPRECATE_SOON("use indexed version", - void* GetInternalField1()) const { + void* GetInternalField1() const) { return internal_fields_[0]; } V8_INLINE V8_DEPRECATE_SOON("use indexed version", - void* GetInternalField2()) const { + void* GetInternalField2() const) { return internal_fields_[1]; } @@ -496,7 +497,7 @@ template class PersistentBase { * and create a new one with the contents of other if other is non empty */ template - V8_INLINE void Reset(Isolate* isolate, const Handle& other); + V8_INLINE void Reset(Isolate* isolate, const Local& other); /** * If non-empty, destroy the underlying storage cell @@ -517,7 +518,8 @@ template class PersistentBase { return *a == *b; } - template V8_INLINE bool operator==(const Handle& that) const { + template + V8_INLINE bool operator==(const Local& that) const { internal::Object** a = reinterpret_cast(this->val_); internal::Object** b = reinterpret_cast(that.val_); if (a == NULL) return b == NULL; @@ -530,7 +532,8 @@ template class PersistentBase { return !operator==(that); } - template V8_INLINE bool operator!=(const Handle& that) const { + template + V8_INLINE bool operator!=(const Local& that) const { return !operator==(that); } @@ -693,11 +696,12 @@ template class Persistent : public PersistentBase { */ V8_INLINE Persistent() : PersistentBase(0) { } /** - * Construct a Persistent from a Handle. - * When the Handle is non-empty, a new storage cell is created + * Construct a Persistent from a Local. + * When the Local is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ - template V8_INLINE Persistent(Isolate* isolate, Handle that) + template + V8_INLINE Persistent(Isolate* isolate, Local that) : PersistentBase(PersistentBase::New(isolate, *that)) { TYPE_CHECK(T, S); } @@ -785,12 +789,12 @@ class Global : public PersistentBase { */ V8_INLINE Global() : PersistentBase(nullptr) {} /** - * Construct a Global from a Handle. - * When the Handle is non-empty, a new storage cell is created + * Construct a Global from a Local. + * When the Local is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ template - V8_INLINE Global(Isolate* isolate, Handle that) + V8_INLINE Global(Isolate* isolate, Local that) : PersistentBase(PersistentBase::New(isolate, *that)) { TYPE_CHECK(T, S); } @@ -835,8 +839,11 @@ class Global : public PersistentBase { typedef void MoveOnlyTypeForCPP03; private: + template + friend class ReturnValue; Global(Global&) = delete; void operator=(Global&) = delete; + V8_INLINE T* operator*() const { return this->val_; } }; @@ -972,45 +979,69 @@ class V8_EXPORT Data { }; +/** + * The optional attributes of ScriptOrigin. + */ +class ScriptOriginOptions { + public: + V8_INLINE ScriptOriginOptions(bool is_embedder_debug_script = false, + bool is_shared_cross_origin = false, + bool is_opaque = false) + : flags_((is_embedder_debug_script ? kIsEmbedderDebugScript : 0) | + (is_shared_cross_origin ? kIsSharedCrossOrigin : 0) | + (is_opaque ? kIsOpaque : 0)) {} + V8_INLINE ScriptOriginOptions(int flags) + : flags_(flags & + (kIsEmbedderDebugScript | kIsSharedCrossOrigin | kIsOpaque)) {} + bool IsEmbedderDebugScript() const { + return (flags_ & kIsEmbedderDebugScript) != 0; + } + bool IsSharedCrossOrigin() const { + return (flags_ & kIsSharedCrossOrigin) != 0; + } + bool IsOpaque() const { return (flags_ & kIsOpaque) != 0; } + int Flags() const { return flags_; } + + private: + enum { + kIsEmbedderDebugScript = 1, + kIsSharedCrossOrigin = 1 << 1, + kIsOpaque = 1 << 2 + }; + const int flags_; +}; + /** * The origin, within a file, of a script. */ class ScriptOrigin { public: V8_INLINE ScriptOrigin( - Handle resource_name, - Handle resource_line_offset = Handle(), - Handle resource_column_offset = Handle(), - Handle resource_is_shared_cross_origin = Handle(), - Handle script_id = Handle(), - Handle resource_is_embedder_debug_script = Handle(), - Handle source_map_url = Handle()) - : resource_name_(resource_name), - resource_line_offset_(resource_line_offset), - resource_column_offset_(resource_column_offset), - resource_is_embedder_debug_script_(resource_is_embedder_debug_script), - resource_is_shared_cross_origin_(resource_is_shared_cross_origin), - script_id_(script_id), - source_map_url_(source_map_url) {} - V8_INLINE Handle ResourceName() const; - V8_INLINE Handle ResourceLineOffset() const; - V8_INLINE Handle ResourceColumnOffset() const; + Local resource_name, + Local resource_line_offset = Local(), + Local resource_column_offset = Local(), + Local resource_is_shared_cross_origin = Local(), + Local script_id = Local(), + Local resource_is_embedder_debug_script = Local(), + Local source_map_url = Local(), + Local resource_is_opaque = Local()); + V8_INLINE Local ResourceName() const; + V8_INLINE Local ResourceLineOffset() const; + V8_INLINE Local ResourceColumnOffset() const; /** * Returns true for embedder's debugger scripts */ - V8_INLINE Handle ResourceIsEmbedderDebugScript() const; - V8_INLINE Handle ResourceIsSharedCrossOrigin() const; - V8_INLINE Handle ScriptID() const; - V8_INLINE Handle SourceMapUrl() const; + V8_INLINE Local ScriptID() const; + V8_INLINE Local SourceMapUrl() const; + V8_INLINE ScriptOriginOptions Options() const { return options_; } private: - Handle resource_name_; - Handle resource_line_offset_; - Handle resource_column_offset_; - Handle resource_is_embedder_debug_script_; - Handle resource_is_shared_cross_origin_; - Handle script_id_; - Handle source_map_url_; + Local resource_name_; + Local resource_line_offset_; + Local resource_column_offset_; + ScriptOriginOptions options_; + Local script_id_; + Local source_map_url_; }; @@ -1025,16 +1056,16 @@ class V8_EXPORT UnboundScript { Local