diff --git a/implementation-contributed/curation_logs/v8.json b/implementation-contributed/curation_logs/v8.json index 68cd5372d59a25ccc538f4c1c8ab4cd5ecf9c883..ed16970ee5e549140f183e9935c3db89129518db 100644 --- a/implementation-contributed/curation_logs/v8.json +++ b/implementation-contributed/curation_logs/v8.json @@ -1,5 +1,5 @@ { - "sourceRevisionAtLastExport": "9f893284", - "targetRevisionAtLastExport": "234933fe8a", + "sourceRevisionAtLastExport": "4dc8ce93", + "targetRevisionAtLastExport": "25f3532881", "curatedFiles": {} } \ No newline at end of file diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block.js b/implementation-contributed/v8/mjsunit/code-coverage-block.js index 61ed87fc13e15442fd2a7175fcf6a42f81280a48..8cbb2969f7d050f325a805f31546dc70376d32f6 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-block.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-block.js @@ -471,7 +471,7 @@ TestCoverage( {"start":472,"end":503,"count":0}, {"start":626,"end":653,"count":0}, {"start":768,"end":803,"count":0}, - {"start":867,"end":868,"count":0}] + {"start":867,"end":869,"count":0}] ); TestCoverage( @@ -850,4 +850,46 @@ Util.escape("foo.bar"); // 0400 {"start":268,"end":350,"count":0}] ); +TestCoverage( +"https://crbug.com/v8/8237", +` +!function() { // 0000 + if (true) // 0050 + while (false) return; else nop(); // 0100 +}(); // 0150 +!function() { // 0200 + if (true) l0: { break l0; } else // 0250 + if (nop()) { } // 0300 +}(); // 0350 +!function() { // 0400 + if (true) { if (false) { return; } // 0450 + } else if (nop()) { } }(); // 0500 +!function(){ // 0550 + if(true)while(false)return;else nop() // 0600 +}(); // 0650 +!function(){ // 0700 + if(true) l0:{break l0}else if (nop()){} // 0750 +}(); // 0800 +!function(){ // 0850 + if(true){if(false){return}}else // 0900 + if(nop()){} // 0950 +}(); // 1000 +`, +[{"start":0,"end":1049,"count":1}, + {"start":1,"end":151,"count":1}, + {"start":118,"end":137,"count":0}, + {"start":201,"end":351,"count":1}, + {"start":277,"end":318,"count":0}, + {"start":401,"end":525,"count":1}, + {"start":475,"end":486,"count":0}, + {"start":503,"end":523,"count":0}, + {"start":551,"end":651,"count":1}, + {"start":622,"end":639,"count":0}, + {"start":701,"end":801,"count":1}, + {"start":773,"end":791,"count":0}, + {"start":851,"end":1001,"count":1}, + {"start":920,"end":928,"count":0}, + {"start":929,"end":965,"count":0}] +); + %DebugToggleBlockCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js b/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js new file mode 100644 index 0000000000000000000000000000000000000000..faa5e632391d95bba17435f397ffd1cc609f8ebe --- /dev/null +++ b/implementation-contributed/v8/mjsunit/compiler/lazy-deopt-async-function-resolve.js @@ -0,0 +1,27 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax + +// Test that the lazy deoptimization point for JSAsyncFunctionResolve +// works correctly, aka that we return the promise and not the result +// of the JSResolvePromise operation. +(function() { + async function foo(x) { + return x; + } + + assertPromiseResult((async () => { + await foo(1); + await foo(2); + %OptimizeFunctionOnNextCall(foo); + const p = new Proxy({}, { + get(...args) { + %DeoptimizeFunction(foo); + return Reflect.get(...args); + } + }); + assertEquals(p, await foo(p)); + })()); +})(); diff --git a/implementation-contributed/v8/mjsunit/compiler/number-multiply.js b/implementation-contributed/v8/mjsunit/compiler/number-multiply.js new file mode 100644 index 0000000000000000000000000000000000000000..5b644974ec0fefef74845f19e886c6b9c180b899 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/compiler/number-multiply.js @@ -0,0 +1,59 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --opt + +// Test the extreme case where -0 is produced by rounding errors. +(function() { + function bar(x) { + return 1e-308 * x; + } + bar(1); + + function foo() { + return Object.is(-0, bar(-1e-308)); + } + + assertTrue(foo()); + assertTrue(foo()); + %OptimizeFunctionOnNextCall(foo); + assertTrue(foo()); +})(); + +// Test that multiplication of integer by 0 produces the correct results. +(function() { + function foo(x) { + return 0 * Math.round(x); + } + + assertEquals(0, foo(0.1)); + assertEquals(-0, foo(-0.1)); + assertEquals(NaN, foo(NaN)); + assertEquals(NaN, foo(Infinity)); + assertEquals(NaN, foo(-Infinity)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo(0.1)); + assertEquals(-0, foo(-0.1)); + assertEquals(NaN, foo(NaN)); + assertEquals(NaN, foo(Infinity)); + assertEquals(NaN, foo(-Infinity)); +})(); + +// Test that multiplication properly preserves -0 and NaN, and doesn't +// cut it short incorrectly. +(function() { + function foo(x, y) { + x = Math.sign(x); + y = Math.sign(y); + return Math.min(x * y, 0); + } + + assertEquals(0, foo(1, 0)); + assertEquals(-0, foo(1, -0)); + assertEquals(NaN, foo(NaN, -0)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0, foo(1, 0)); + assertEquals(-0, foo(1, -0)); + assertEquals(NaN, foo(NaN, -0)); +})(); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js new file mode 100644 index 0000000000000000000000000000000000000000..50d37726a91d24a4054b964e3e7529a92ecb0506 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-1.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); + +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +map[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js new file mode 100644 index 0000000000000000000000000000000000000000..d8d20ee9ca57bc7a9219cd509442333ecfe0572b --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-10.js @@ -0,0 +1,34 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +// This changes %IteratorPrototype%. No more tests should be run after this in +// the same instance. +var iterator = map.keys(); +// iterator object --> %MapIteratorPrototype% --> %IteratorPrototype% +iterator.__proto__.__proto__[Symbol.iterator] = + () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); + +assertFalse(%SetIteratorProtector()); +assertEquals([1,2,3], [...set]); +assertEquals([], [...set.entries()]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js new file mode 100644 index 0000000000000000000000000000000000000000..7adf058fb44f42427315ef971e4d2bae2deebc87 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-2.js @@ -0,0 +1,20 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +// This changes %MapPrototype%. No more tests should be run after this in the +// same instance. +map.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js new file mode 100644 index 0000000000000000000000000000000000000000..ca0dc9cac20a1864bc97eab82a8a010cd551714b --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-3.js @@ -0,0 +1,22 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +// This changes %MapIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = map[Symbol.iterator](); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js new file mode 100644 index 0000000000000000000000000000000000000000..a43282a69c1b2030c392be876357d0f477f77a01 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-4.js @@ -0,0 +1,22 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +// This changes %MapIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = map.keys(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js new file mode 100644 index 0000000000000000000000000000000000000000..0af32b58ba83743c429cad46f770f092a6d3aaef --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-5.js @@ -0,0 +1,22 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +// This changes %MapIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = map.values(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js new file mode 100644 index 0000000000000000000000000000000000000000..6611e7aca0962178ac10a24482c686046e383917 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-6.js @@ -0,0 +1,20 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +var iterator = map.values(); +iterator.next = () => ({done: true}); + +assertFalse(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js new file mode 100644 index 0000000000000000000000000000000000000000..b5a2345bd8b9a9caa466544a2c740d01c2395200 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-7.js @@ -0,0 +1,22 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); + +// This changes %MapIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = map.entries(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%MapIteratorProtector()); +assertTrue(%SetIteratorProtector()); +assertEquals([], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js new file mode 100644 index 0000000000000000000000000000000000000000..01dacfb72e5a7352539f499939316db1802e4817 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-8.js @@ -0,0 +1,32 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +// This changes %MapIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = map.keys(); +iterator.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); +assertEquals([], [...iterator]); + +assertFalse(%SetIteratorProtector()); +assertEquals([1,2,3], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js b/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js new file mode 100644 index 0000000000000000000000000000000000000000..2db159d80ec8516c43e7f5c35f46320c3e42844f --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/map-iterator-9.js @@ -0,0 +1,30 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +var iterator = map.keys(); +iterator[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); +assertEquals([], [...iterator]); + +assertFalse(%SetIteratorProtector()); +assertEquals([1,2,3], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js new file mode 100644 index 0000000000000000000000000000000000000000..2e4447de6892775a2b2fb70f6ccb9eb2e76884f8 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-1.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertEquals([1,2,3], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +set[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js new file mode 100644 index 0000000000000000000000000000000000000000..ec094d20d0df1564d4f4301ef77029f6105cf561 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-10.js @@ -0,0 +1,34 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +// This changes %IteratorPrototype%. No more tests should be run after this in +// the same instance. +var iterator = set.keys(); +// iterator object --> %SetIteratorPrototype% --> %IteratorPrototype% +iterator.__proto__.__proto__[Symbol.iterator] = + () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([], [...map.entries()]); +assertEquals([], [...map.keys()]); +assertEquals([], [...map.values()]); + +assertFalse(%SetIteratorProtector()); +assertEquals([], [...set.entries()]); +assertEquals([1,2,3], [...set]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js new file mode 100644 index 0000000000000000000000000000000000000000..b1fc6bbfea08b1d6d1d93ab63b93f631994a7cc5 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-2.js @@ -0,0 +1,21 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +// This changes %SetPrototype%. No more tests should be run after this in the +// same instance. +set.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js new file mode 100644 index 0000000000000000000000000000000000000000..b727f3280ce5f4732da83291ceb1f86dd26745ec --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-3.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +// This changes %SetIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = set[Symbol.iterator](); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([], [...set.entries()]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js new file mode 100644 index 0000000000000000000000000000000000000000..69a18893e8ca1f67d4beb11337aba8aad18a8ff3 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-4.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +// This changes %SetIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = set.keys(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([], [...set.entries()]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js new file mode 100644 index 0000000000000000000000000000000000000000..ec8a653b69f1d4c1a32190e210a467ba08746f26 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-5.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +// This changes %SetIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = set.values(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([], [...set.entries()]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js new file mode 100644 index 0000000000000000000000000000000000000000..c5a2a7b09dac34c681c98ca992cbc1af563264bf --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-6.js @@ -0,0 +1,21 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +var iterator = set.values(); +iterator.next = () => ({done: true}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([1,2,3], [...set]); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js new file mode 100644 index 0000000000000000000000000000000000000000..a244b1e47f7212f5ac0130e1cb1ae5d91424f699 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-7.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +var set = new Set([1,2,3]); + +assertTrue(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); + +// This changes %SetIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = set.entries(); +iterator.__proto__.next = () => ({done: true}); + +assertFalse(%SetIteratorProtector()); +assertTrue(%MapIteratorProtector()); +assertEquals([], [...set]); +assertEquals([], [...set.entries()]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js new file mode 100644 index 0000000000000000000000000000000000000000..2328a7b737752cd9380d55ae34938e7d3caafbab --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-8.js @@ -0,0 +1,31 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +// This changes %SetIteratorPrototype%. No more tests should be run after this +// in the same instance. +var iterator = set.keys(); +iterator.__proto__[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); + +assertFalse(%SetIteratorProtector()); +assertEquals([], [...set.entries()]); +assertEquals([1,2,3], [...set]); +assertEquals([], [...set.keys()]); +assertEquals([], [...set.values()]); diff --git a/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js b/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js new file mode 100644 index 0000000000000000000000000000000000000000..42cbf3077aaf367229ad7834e8882b9e5d253a06 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/es6/set-iterator-9.js @@ -0,0 +1,31 @@ + +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --no-stress-opt + +// This tests the interaction between the MapIterator protector and SetIterator +// protector. + +var map = new Map([[1,2], [2,3], [3,4]]); +assertTrue(%MapIteratorProtector()); + +var set = new Set([1,2,3]); +assertTrue(%SetIteratorProtector()); + +var iterator = set.keys(); +iterator[Symbol.iterator] = () => ({next: () => ({done: true})}); + +assertFalse(%MapIteratorProtector()); +assertEquals([[1,2], [2,3], [3,4]], [...map]); +assertEquals([[1,2], [2,3], [3,4]], [...map.entries()]); +assertEquals([1,2,3], [...map.keys()]); +assertEquals([2,3,4], [...map.values()]); + +assertFalse(%SetIteratorProtector()); +assertEquals([[1,1],[2,2],[3,3]], [...set.entries()]); +assertEquals([1,2,3], [...set]); +assertEquals([1,2,3], [...set.keys()]); +assertEquals([1,2,3], [...set.values()]); +assertEquals([], [...iterator]); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js b/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js new file mode 100644 index 0000000000000000000000000000000000000000..f73aa68f3bb41f4351de12e6e94f19474677b85c --- /dev/null +++ b/implementation-contributed/v8/mjsunit/harmony/modules-import-17.js @@ -0,0 +1,11 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax --harmony-namespace-exports + +var ns; +import('modules-skip-13.js').then(x => ns = x); +%RunMicrotasks(); +assertEquals(42, ns.default); +assertEquals(ns, ns.self); diff --git a/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js b/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js new file mode 100644 index 0000000000000000000000000000000000000000..d823a283f8e2c37d5680bdcadd18a3bce8b3cc75 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/harmony/modules-skip-13.js @@ -0,0 +1,6 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +export * as self from "./modules-skip-13.js"; +export default 42; diff --git a/implementation-contributed/v8/mjsunit/mjsunit.status b/implementation-contributed/v8/mjsunit/mjsunit.status index 7200f41ac6d592f58a4ee3bce0b4115bb819de5d..7f564ffe0160c5ff21a323854a5618d71171d60b 100644 --- a/implementation-contributed/v8/mjsunit/mjsunit.status +++ b/implementation-contributed/v8/mjsunit/mjsunit.status @@ -467,6 +467,9 @@ 'regress/wasm/regress-694433': [SKIP], 'es6/typedarray': [PASS, NO_VARIANTS], 'regress/regress-752764': [PASS, NO_VARIANTS], + + # BUG(v8:8294). Started flaking from seemingly unrelated commits, investigating. + 'object-seal': [SKIP], }], # 'tsan == True' ############################################################################## @@ -796,6 +799,9 @@ 'es6/classes': [PASS, ['tsan', SKIP]], 'regress/regress-1122': [PASS, ['tsan', SKIP]], + # Too slow with gc_stress on arm64. + 'messages': [PASS, ['gc_stress and arch == arm64', SKIP]], + # Slow on arm64 simulator: https://crbug.com/v8/7783 'string-replace-gc': [PASS, ['arch == arm64 and simulator_run', SKIP]], @@ -892,4 +898,44 @@ 'wasm/asm-wasm-f64': [SKIP], }], # arch == x64 +############################################################################## +['arch == ia32 and embedded_builtins == True', { + # TODO(v8:6666): Fix arguments adaptor trampoline + 'wasm/compiled-module-serialization': [SKIP], + 'asm/embenchen/copy': [SKIP], + 'wasm/embenchen/corrections': [SKIP], + 'asm/embenchen/primes': [SKIP], + 'asm/embenchen/corrections': [SKIP], + 'wasm/embenchen/copy': [SKIP], + 'asm/embenchen/fannkuch': [SKIP], + 'asm/embenchen/memops': [SKIP], + 'asm/embenchen/fasta': [SKIP], + 'wasm/embenchen/fannkuch': [SKIP], + 'asm/embenchen/zlib': [SKIP], + 'wasm/embenchen/fasta': [SKIP], + 'wasm/embenchen/primes': [SKIP], + 'wasm/embenchen/box2d': [SKIP], + 'asm/embenchen/box2d': [SKIP], + 'wasm/embenchen/memops': [SKIP], + 'wasm/embenchen/zlib': [SKIP], + 'asm/embenchen/lua_binarytrees': [SKIP], + 'wasm/embenchen/lua_binarytrees': [SKIP], + 'asm/sqlite3/sqlite': [SKIP], + 'asm/sqlite3/sqlite-safe-heap': [SKIP], + 'asm/sqlite3/sqlite-pointer-masking': [SKIP], + 'asm/poppler/poppler': [SKIP], + 'regress/wasm/regress-808848': [SKIP], + 'regress/wasm/regress-834624': [SKIP], + 'regress/wasm/regress-843563': [SKIP], + 'wasm/anyref': [SKIP], + 'wasm/exceptions-shared': [SKIP], + 'wasm/errors': [SKIP], + 'wasm/ffi-error': [SKIP], + 'wasm/gc-frame': [SKIP], + 'wasm/import-function': [SKIP], + 'wasm/ffi': [SKIP], + 'wasm/test-wasm-module-builder': [SKIP], + 'wasm/stackwalk': [SKIP], +}], # arch == ia32 and embedded_builtins == True + ] diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as1.js b/implementation-contributed/v8/mjsunit/modules-export-star-as1.js new file mode 100644 index 0000000000000000000000000000000000000000..1696c1c84dee1567b44cd342d57541150c39781b --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-export-star-as1.js @@ -0,0 +1,10 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// MODULE +// Flags: --harmony-namespace-exports + +import {foo} from "./modules-skip-8.js"; +assertEquals(42, foo.default); +assertEquals(1, foo.get_a()); diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as2.js b/implementation-contributed/v8/mjsunit/modules-export-star-as2.js new file mode 100644 index 0000000000000000000000000000000000000000..57828ebd6706f03dd637643c5fd2c437e9124f94 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-export-star-as2.js @@ -0,0 +1,19 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// MODULE +// Flags: --harmony-namespace-exports + +export * as self from "./modules-export-star-as2.js"; +export * as self_again from "./modules-export-star-as2.js"; +import {self as myself} from "./modules-export-star-as2.js"; +import {self_again as myself_again} from "./modules-export-star-as2.js"; + +assertEquals(["self", "self_again"], Object.keys(myself)); +assertEquals(myself, myself.self); +assertEquals(myself_again, myself.self_again); +assertEquals(myself, myself_again); + +assertThrows(_ => self, ReferenceError); +assertThrows(_ => self_again, ReferenceError); diff --git a/implementation-contributed/v8/mjsunit/modules-export-star-as3.js b/implementation-contributed/v8/mjsunit/modules-export-star-as3.js new file mode 100644 index 0000000000000000000000000000000000000000..4077cbd9c6097098bd17b60a92ce1bd8832d019a --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-export-star-as3.js @@ -0,0 +1,15 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// MODULE +// Flags: --harmony-namespace-exports + +let self = 42; +export * as self from "./modules-export-star-as3.js"; +import {self as myself} from "./modules-export-star-as3.js"; +assertEquals(["self"], Object.keys(myself)); +assertEquals(myself, myself.self); +assertEquals(42, self); +self++; +assertEquals(43, self); diff --git a/implementation-contributed/v8/mjsunit/modules-imports8.js b/implementation-contributed/v8/mjsunit/modules-imports8.js new file mode 100644 index 0000000000000000000000000000000000000000..56ea60f4c36f397ded50a247ed0208db8b899475 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-imports8.js @@ -0,0 +1,11 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// MODULE +// Flags: --harmony-namespace-exports + +import {a, b} from "./modules-skip-9.js"; +assertSame(a, b); +assertEquals(42, a.default); +assertEquals(1, a.a); diff --git a/implementation-contributed/v8/mjsunit/modules-skip-8.js b/implementation-contributed/v8/mjsunit/modules-skip-8.js new file mode 100644 index 0000000000000000000000000000000000000000..376788e283b3eb8217e0d89ed24282df7aaa4402 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-skip-8.js @@ -0,0 +1,5 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +export * as foo from "./modules-skip-1.js"; diff --git a/implementation-contributed/v8/mjsunit/modules-skip-9.js b/implementation-contributed/v8/mjsunit/modules-skip-9.js new file mode 100644 index 0000000000000000000000000000000000000000..c0afcdf99ec1296962e1153aa94bf1127dfe110e --- /dev/null +++ b/implementation-contributed/v8/mjsunit/modules-skip-9.js @@ -0,0 +1,7 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import * as b from "./modules-skip-1.js"; +export {b}; +export * as a from "./modules-skip-1.js"; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-8237.js b/implementation-contributed/v8/mjsunit/regress/regress-8237.js deleted file mode 100644 index c3abd17e8a9646abfcbc85da9a1bade94b4599a3..0000000000000000000000000000000000000000 --- a/implementation-contributed/v8/mjsunit/regress/regress-8237.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2018 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Flags: --allow-natives-syntax --no-always-opt -// Files: test/mjsunit/code-coverage-utils.js - -%DebugToggleBlockCoverage(true); - -TestCoverage( -"Repro for the bug", -` -function lib (n) { // 0000 - if (n >= 0) { // 0050 - if (n < 0) { // 0100 - return; // 0150 - } // 0200 - } else if (foo()) { // 0250 - } // 0300 -} // 0350 -function foo () { // 0400 - console.log('foo') // 0450 - return false // 0500 -} // 0550 -lib(1) // 0600 -`, -[{"start":0,"end":649,"count":1}, -{"start":0,"end":351,"count":1}, -{"start":115,"end":205,"count":0}, -{"start":253,"end":303,"count":0}, -{"start":400,"end":551,"count":0}] -); - -TestCoverage( -"Variant with omitted brackets", -` -function lib (n) { // 0000 - if (n >= 0) { // 0050 - if (n < 0) // 0100 - return; // 0150 - } // 0200 - else if (foo()); // 0250 -} // 0300 -function foo () { // 0350 - console.log('foo') // 0400 - return false // 0450 -} // 0500 -lib(1) // 0550 -`, -[{"start":0,"end":599,"count":1}, -{"start":0,"end":301,"count":1}, -{"start":156,"end":163,"count":0}, -{"start":203,"end":268,"count":0}, -{"start":350,"end":501,"count":0}] -); - -%DebugToggleBlockCoverage(false); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js index bcf3ceeca235d182f1265202a14410f902777eca..52985c3297dd68fb2cb243287a55290922c2e64a 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-739768.js @@ -16,7 +16,7 @@ builder0.addFunction('main', kSig_i_i) kExprCallIndirect, sig_index, kTableZero ]) // -- .exportAs('main'); -builder0.setFunctionTableBounds(3, 3); +builder0.setTableBounds(3, 3); builder0.addExportOfKind('table', kExternalTable); let module0 = new WebAssembly.Module(builder0.toBuffer()); let instance0 = new WebAssembly.Instance(module0); @@ -25,7 +25,7 @@ let builder1 = new WasmModuleBuilder(); builder1.setName('module_1'); builder1.addFunction('main', kSig_i_v).addBody([kExprUnreachable]); builder1.addImportedTable('z', 'table'); -builder1.addFunctionTableInit(0, false, [0], true); +builder1.addElementSegment(0, false, [0], true); let module1 = new WebAssembly.Module(builder1.toBuffer()); let instance1 = new WebAssembly.Instance(module1, {z: {table: instance0.exports.table}}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js index 8edec7c4645acaaeadaf9d2a356771e8a016db17..e7fa3aaa8fbc70f350161c2ae3302813007ae9c6 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-803788.js @@ -12,7 +12,7 @@ let q_table = builder.addImportedTable("q", "table") let q_base = builder.addImportedGlobal("q", "base", kWasmI32); let q_fun = builder.addImport("q", "fun", kSig_v_v); builder.addType(kSig_i_ii); -builder.addFunctionTableInit(q_base, true, [ q_fun ]) +builder.addElementSegment(q_base, true, [ q_fun ]) let module = new WebAssembly.Module(builder.toBuffer()); let table = new WebAssembly.Table({ element: "anyfunc", diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js index 884572b895521d471a6f4ea9fa7a632606558080..ecf6476c372fb6a21464365033cb938520d6f4e7 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-808980.js @@ -17,7 +17,7 @@ builder.addFunction('main', kSig_i_ii).addBody([ sig_index1, kTableZero ]).exportAs('main'); -builder.setFunctionTableBounds(kTableSize, kTableSize); +builder.setTableBounds(kTableSize, kTableSize); var m1_bytes = builder.toBuffer(); var m1 = new WebAssembly.Module(m1_bytes); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js index e6047ea231430233e01db995ed8ebb1b3d7814aa..2cf50892fc39701f1dcee26b8f85afd88bb8268f 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-817380.js @@ -20,6 +20,6 @@ const builder2 = new WasmModuleBuilder(); const mul_import = builder2.addImport('q', 'wasm_mul', kSig_i_ii); builder2.addImportedTable('q', 'table'); const glob_import = builder2.addImportedGlobal('q', 'glob', kWasmI32); -builder2.addFunctionTableInit(glob_import, true, [mul_import]); +builder2.addElementSegment(glob_import, true, [mul_import]); builder2.instantiate( {q: {glob: 0, js_div: i => i, wasm_mul: mul, table: table}}); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js index 5ddc9dd9c4d266d0adb9f8bd40053c51897343b2..378e38e03cf6d785ce1bc6f7455d70d2515c2aff 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-834619.js @@ -33,7 +33,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); kExprCallIndirect, 0, kTableZero ]) .exportFunc(); - builder.addFunctionTableInit(0, false, [0, 1, 1, 0]); + builder.addElementSegment(0, false, [0, 1, 1, 0]); return builder.instantiate({q: {f2: i1.exports.f2, f1: i1.exports.f1}}); })(); diff --git a/implementation-contributed/v8/test262/testcfg.py b/implementation-contributed/v8/test262/testcfg.py index 105f6713f28106a1b8c20b86b38c1af4cb79e727..5c74cb734f8f2696f9d381374bd4f0cc35e11097 100644 --- a/implementation-contributed/v8/test262/testcfg.py +++ b/implementation-contributed/v8/test262/testcfg.py @@ -56,10 +56,10 @@ FEATURE_FLAGS = { 'Symbol.prototype.description': '--harmony-symbol-description', 'globalThis': '--harmony-global', 'well-formed-json-stringify': '--harmony-json-stringify', + 'export-star-as-namespace-from-module': '--harmony-namespace-exports', } SKIPPED_FEATURES = set(['Object.fromEntries', - 'export-star-as-namespace-from-module', 'class-fields-private', 'class-static-fields-private', 'class-methods-private',