From 7ebd881c2948b043b8ea9fdcb4ea2d76955615ec Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Mon, 14 Sep 2015 17:16:54 -0700 Subject: [PATCH] deps: upgrade V8 to 4.5.103.33 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This brings in the patches from 4.5.103.30...4.5.103.33 fixing the issue with computed property names not working in nested literals. Full V8 4.5 commit log at: https://chromium.googlesource.com/v8/v8.git/+log/branch-heads/4.5 Fixes: https://github.com/nodejs/node/issues/2507 PR-URL: https://github.com/nodejs/node/pull/2870 Reviewed-By: indutny - Fedor Indutny Reviewed-By: targos - Michaël Zasso Reviewed-By: bnoordhuis - Ben Noordhuis Reviewed-By: fishrock123 - Jeremiah Senkpiel --- deps/v8/build/features.gypi | 4 +- deps/v8/codereview.settings | 2 +- deps/v8/include/v8-version.h | 2 +- deps/v8/src/ast.cc | 1 + .../mjsunit/harmony/computed-property-names.js | 56 ++++++++++++++++++++++ 5 files changed, 61 insertions(+), 4 deletions(-) diff --git a/deps/v8/build/features.gypi b/deps/v8/build/features.gypi index 0e26969..59d1513 100644 --- a/deps/v8/build/features.gypi +++ b/deps/v8/build/features.gypi @@ -108,7 +108,7 @@ 'DebugBaseCommon': { 'abstract': 1, 'variables': { - 'v8_enable_handle_zapping%': 0, + 'v8_enable_handle_zapping%': 1, }, 'conditions': [ ['v8_enable_handle_zapping==1', { @@ -118,7 +118,7 @@ }, # Debug 'Release': { 'variables': { - 'v8_enable_handle_zapping%': 1, + 'v8_enable_handle_zapping%': 0, }, 'conditions': [ ['v8_enable_handle_zapping==1', { diff --git a/deps/v8/codereview.settings b/deps/v8/codereview.settings index 7c4dd8e..532e4b4 100644 --- a/deps/v8/codereview.settings +++ b/deps/v8/codereview.settings @@ -1,5 +1,5 @@ CODE_REVIEW_SERVER: https://codereview.chromium.org -CC_LIST: v8-dev@googlegroups.com +CC_LIST: v8-reviews@googlegroups.com VIEW_VC: https://chromium.googlesource.com/v8/v8/+/ STATUS: http://v8-status.appspot.com/status TRY_ON_UPLOAD: False diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index a2dc5b0..56ef22b 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 4 #define V8_MINOR_VERSION 5 #define V8_BUILD_NUMBER 103 -#define V8_PATCH_LEVEL 30 +#define V8_PATCH_LEVEL 33 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/ast.cc b/deps/v8/src/ast.cc index e52504a..ec74e4a 100644 --- a/deps/v8/src/ast.cc +++ b/deps/v8/src/ast.cc @@ -441,6 +441,7 @@ void ObjectLiteral::BuildConstantProperties(Isolate* isolate) { if (position == boilerplate_properties_ * 2) { DCHECK(property->is_computed_name()); + is_simple = false; break; } DCHECK(!property->is_computed_name()); diff --git a/deps/v8/test/mjsunit/harmony/computed-property-names.js b/deps/v8/test/mjsunit/harmony/computed-property-names.js index 36e1411..a559159 100644 --- a/deps/v8/test/mjsunit/harmony/computed-property-names.js +++ b/deps/v8/test/mjsunit/harmony/computed-property-names.js @@ -300,3 +300,59 @@ function ID(x) { }; }, MyError); })(); + + +(function TestNestedLiterals() { + var array = [ + 42, + { a: 'A', + ['b']: 'B', + c: 'C', + [ID('d')]: 'D', + }, + 43, + ]; + assertEquals(42, array[0]); + assertEquals(43, array[2]); + assertEquals('A', array[1].a); + assertEquals('B', array[1].b); + assertEquals('C', array[1].c); + assertEquals('D', array[1].d); + var object = { + outer: 42, + inner: { + a: 'A', + ['b']: 'B', + c: 'C', + [ID('d')]: 'D', + }, + outer2: 43, + }; + assertEquals(42, object.outer); + assertEquals(43, object.outer2); + assertEquals('A', object.inner.a); + assertEquals('B', object.inner.b); + assertEquals('C', object.inner.c); + assertEquals('D', object.inner.d); + var object = { + outer: 42, + array: [ + 43, + { a: 'A', + ['b']: 'B', + c: 'C', + [ID('d')]: 'D', + }, + 44, + ], + outer2: 45 + }; + assertEquals(42, object.outer); + assertEquals(45, object.outer2); + assertEquals(43, object.array[0]); + assertEquals(44, object.array[2]); + assertEquals('A', object.array[1].a); + assertEquals('B', object.array[1].b); + assertEquals('C', object.array[1].c); + assertEquals('D', object.array[1].d); +})(); -- 2.7.4