diff options
Diffstat (limited to 'deps/v8/test/mjsunit/regress')
62 files changed, 1898 insertions, 97 deletions
diff --git a/deps/v8/test/mjsunit/regress/regress-319722-ArrayBuffer.js b/deps/v8/test/mjsunit/regress/regress-319722-ArrayBuffer.js index 9a24fc5c7c..4a48a61ab3 100644 --- a/deps/v8/test/mjsunit/regress/regress-319722-ArrayBuffer.js +++ b/deps/v8/test/mjsunit/regress/regress-319722-ArrayBuffer.js @@ -26,7 +26,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Flags: --nostress-opt --allow-natives-syntax --mock-arraybuffer-allocator -var maxSize = %_MaxSmi() + 1; +var maxSize = %MaxSmi() + 1; var ab; // Allocate the largest ArrayBuffer we can on this architecture. diff --git a/deps/v8/test/mjsunit/regress/regress-319722-TypedArrays.js b/deps/v8/test/mjsunit/regress/regress-319722-TypedArrays.js index e497aecbe0..0445e2d2cf 100644 --- a/deps/v8/test/mjsunit/regress/regress-319722-TypedArrays.js +++ b/deps/v8/test/mjsunit/regress/regress-319722-TypedArrays.js @@ -27,7 +27,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Flags: --nostress-opt --allow-natives-syntax -var maxSize = %_MaxSmi() + 1; +var maxSize = %MaxSmi() + 1; function TestArray(constr) { assertThrows(function() { new constr(maxSize); diff --git a/deps/v8/test/mjsunit/regress/regress-3255.js b/deps/v8/test/mjsunit/regress/regress-3255.js index 0e77435374..0c5ee4ff00 100644 --- a/deps/v8/test/mjsunit/regress/regress-3255.js +++ b/deps/v8/test/mjsunit/regress/regress-3255.js @@ -16,4 +16,4 @@ f(str, 0); f(str, 0); // This is just to trigger elements validation, object already broken. -%SetProperty(str, 1, 'y', 0); +%SetKeyedProperty(str, 1, 'y', 0); diff --git a/deps/v8/test/mjsunit/regress/regress-4271.js b/deps/v8/test/mjsunit/regress/regress-4271.js index bc18771e72..5b724b01b6 100644 --- a/deps/v8/test/mjsunit/regress/regress-4271.js +++ b/deps/v8/test/mjsunit/regress/regress-4271.js @@ -17,7 +17,7 @@ if (this.Worker) { }); // Don't throw for real worker - var worker = new Worker(''); + var worker = new Worker('', {type: 'string'}); worker.getMessage(); worker.postMessage({}); worker.terminate(); diff --git a/deps/v8/test/mjsunit/regress/regress-4279.js b/deps/v8/test/mjsunit/regress/regress-4279.js index 64ef967d89..ddc272793e 100644 --- a/deps/v8/test/mjsunit/regress/regress-4279.js +++ b/deps/v8/test/mjsunit/regress/regress-4279.js @@ -4,7 +4,7 @@ if (this.Worker && this.quit) { try { - new Function(new Worker("55")); + new Function(new Worker("55"), {type: 'string'}); } catch(err) {} quit(); diff --git a/deps/v8/test/mjsunit/regress/regress-707066.js b/deps/v8/test/mjsunit/regress/regress-707066.js index b33b585ebd..b5d70c2e6b 100644 --- a/deps/v8/test/mjsunit/regress/regress-707066.js +++ b/deps/v8/test/mjsunit/regress/regress-707066.js @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Flags: --harmony-function-tostring - // There was a bug in CreateDynamicFunction where a stack overflow // situation caused an assertion failure. diff --git a/deps/v8/test/mjsunit/regress/regress-8133-1.js b/deps/v8/test/mjsunit/regress/regress-8133-1.js new file mode 100644 index 0000000000..8f3cc734a6 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8133-1.js @@ -0,0 +1,16 @@ +// 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. + +const arr = [1, , 3]; + +function mapper(x) { + Array.prototype[1] = 2; + return x + 1; +} + +// This iterates over arr using the iterator protocol, which turns the hole into +// undefined. The mapper function then gets called in a separate iteration over +// the acquired elements, where it increments undefined, which produces NaN and +// gets converted to 0. +assertArrayEquals([2, 0, 4], Uint16Array.from(arr, mapper)); diff --git a/deps/v8/test/mjsunit/regress/regress-8133-2.js b/deps/v8/test/mjsunit/regress/regress-8133-2.js new file mode 100644 index 0000000000..e163e3c784 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8133-2.js @@ -0,0 +1,17 @@ +// 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. + +const arr = [1, , 3]; + +function mapper(x) { + Array.prototype[1] = 2; + return x + 1; +} + +// We force a direct iteration (using the array length, not the iterator +// protocol). The mapper function gets called during this iteration, not in a +// separate one. Hence when index 1 is read, 2 is retrieved from the prototype +// and incremented to 3. +Array.prototype[Symbol.iterator] = undefined; +assertArrayEquals([2, 3, 4], Uint16Array.from(arr, mapper)); diff --git a/deps/v8/test/mjsunit/regress/regress-821368.js b/deps/v8/test/mjsunit/regress/regress-821368.js index b41261d7c9..8f8a01b3f7 100644 --- a/deps/v8/test/mjsunit/regress/regress-821368.js +++ b/deps/v8/test/mjsunit/regress/regress-821368.js @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -const worker = new Worker("onmessage = function(){}"); +const worker = new Worker("onmessage = function(){}", {type: 'string'}); const buffer = new ArrayBuffer(); worker.postMessage(buffer, [buffer]); try { diff --git a/deps/v8/test/mjsunit/regress/regress-8237.js b/deps/v8/test/mjsunit/regress/regress-8237.js new file mode 100644 index 0000000000..c3abd17e8a --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8237.js @@ -0,0 +1,57 @@ +// 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/deps/v8/test/mjsunit/regress/regress-8265.js b/deps/v8/test/mjsunit/regress/regress-8265.js new file mode 100644 index 0000000000..ffe6191c9f --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8265.js @@ -0,0 +1,12 @@ +// 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: --random-seed=1 + +for (let i = 0; i < 54; ++i) Math.random(); +let sum = 0; +for (let i = 0; i < 10; ++i) + sum += Math.floor(Math.random() * 50); + +assertNotEquals(0, sum); diff --git a/deps/v8/test/mjsunit/regress/regress-8449.js b/deps/v8/test/mjsunit/regress/regress-8449.js new file mode 100644 index 0000000000..32fa82aa6e --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8449.js @@ -0,0 +1,25 @@ +// 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. + +{ + const x = [, 1]; + x.__proto__ = [42]; + const y = [...x]; + assertEquals([42, 1], y); + assertTrue(y.hasOwnProperty(0)); +} + +{ + const x = [, 1]; + x.__proto__ = [42]; + assertEquals(42, x[Symbol.iterator]().next().value); +} + +{ + const array_prototype = [].__proto__; + array_prototype[0] = 42; + const x = [, 1]; + assertEquals(42, x[Symbol.iterator]().next().value); + delete array_prototype[0]; +} diff --git a/deps/v8/test/mjsunit/regress/regress-883059.js b/deps/v8/test/mjsunit/regress/regress-883059.js new file mode 100644 index 0000000000..ed70feddb4 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-883059.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. + +// Flags: --random-seed=-1595876594 --disable-in-process-stack-traces --no-lazy + +var __v_47 = ({[__v_46]: __f_52}) => { var __v_46 = 'b'; return __f_52; }; diff --git a/deps/v8/test/mjsunit/regress/regress-889722.js b/deps/v8/test/mjsunit/regress/regress-889722.js new file mode 100644 index 0000000000..c883dbe489 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-889722.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. + +function getRandomProperty(v, rand) { + var properties = Object.getOwnPropertyNames(v); + return properties[rand % properties.length]; +} +r = Realm.create(); +o = Realm.eval(r, "() => { return Realm.global(-10) instanceof Object }"); +o.__p_211203344 = o[getRandomProperty(o, 211203344)]; diff --git a/deps/v8/test/mjsunit/regress/regress-890553.js b/deps/v8/test/mjsunit/regress/regress-890553.js new file mode 100644 index 0000000000..33f13e8f26 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-890553.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. + +"use strict"; +var s = "function __f_9(func, testName) {" + + "var __v_0 = function __f_10(__v_14, __v_14) {" + + " return __v_16;" + + "}; " + +"}" +assertThrows(function() { eval(s); }); diff --git a/deps/v8/test/mjsunit/regress/regress-2185.js b/deps/v8/test/mjsunit/regress/regress-892858.js index 9b91066f33..ec921e3d43 100644 --- a/deps/v8/test/mjsunit/regress/regress-2185.js +++ b/deps/v8/test/mjsunit/regress/regress-892858.js @@ -1,4 +1,4 @@ -// Copyright 2012 the V8 project authors. All rights reserved. +// Copyright 2018 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: @@ -25,14 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --noenable-slow-asserts - -var a = []; - -for (var i = 0; i < 2; i++) { - for (var j = 0; j < 30000; j++) { - a.push(j); - } +async function foo() { + await Promise.resolve(42); } -a.sort(function(a, b) { return a - b; } ); +foo(); diff --git a/deps/v8/test/mjsunit/regress/regress-arrow-single-expression-eval.js b/deps/v8/test/mjsunit/regress/regress-arrow-single-expression-eval.js new file mode 100644 index 0000000000..83a9ca1a56 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-arrow-single-expression-eval.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. + +((x=1) => eval("var x = 10"))(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-380671.js b/deps/v8/test/mjsunit/regress/regress-crbug-380671.js deleted file mode 100644 index e2909e0a43..0000000000 --- a/deps/v8/test/mjsunit/regress/regress-crbug-380671.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2015 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: --mock-arraybuffer-allocator --expose-gc - -var buffer = new ArrayBuffer(0xc0000000); -assertEquals(0xc0000000, buffer.byteLength); -// We call the GC here to free up the large array buffer. Otherwise, the -// mock allocator would allow us to allocate more than the physical memory -// available on 32bit platforms, leaving the internal counters in an invalid -// state. -buffer = null; -gc(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-503578.js b/deps/v8/test/mjsunit/regress/regress-crbug-503578.js index 1274d91ffe..59c33da20e 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-503578.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-503578.js @@ -8,7 +8,7 @@ if (this.Worker) { var __v_5 = new Uint32Array(__v_1); return __v_5; } - var __v_6 = new Worker('onmessage = function() {}'); + var __v_6 = new Worker('onmessage = function() {}', {type: 'string'}); var __v_3 = __f_0(16); __v_6.postMessage(__v_3); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-503698.js b/deps/v8/test/mjsunit/regress/regress-crbug-503698.js index 415d1bc81b..c817bede29 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-503698.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-503698.js @@ -5,5 +5,5 @@ // Flags: --invoke-weak-callbacks if (this.Worker) { - var __v_6 = new Worker(''); + var __v_6 = new Worker('', {type: 'string'}); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-503968.js b/deps/v8/test/mjsunit/regress/regress-crbug-503968.js index 78d1c7b98a..0552163144 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-503968.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-503968.js @@ -8,6 +8,6 @@ if (this.Worker) { this.l = [new __f_0, new __f_0]; } __v_6 = new __f_1; - var __v_9 = new Worker(''); + var __v_9 = new Worker('', {type: 'string'}); __v_9.postMessage(__v_6); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-503991.js b/deps/v8/test/mjsunit/regress/regress-crbug-503991.js index 6a3b0de759..7b96e92677 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-503991.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-503991.js @@ -4,6 +4,6 @@ if (this.Worker) { __v_3 = ""; - var __v_6 = new Worker(''); + var __v_6 = new Worker('', {type: 'string'}); __v_6.postMessage(__v_3); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-504136.js b/deps/v8/test/mjsunit/regress/regress-crbug-504136.js index 4ed6843544..25b11e0fec 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-504136.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-504136.js @@ -3,7 +3,7 @@ // found in the LICENSE file. if (this.Worker) { - var __v_10 = new Worker(''); + var __v_10 = new Worker('', {type: 'string'}); __v_10.terminate(); __v_10.getMessage(); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-504727.js b/deps/v8/test/mjsunit/regress/regress-crbug-504727.js index 16d8ff16cd..a295a1bd35 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-504727.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-504727.js @@ -5,5 +5,5 @@ // Flags: --no-test if (this.Worker) { - var __v_2 = new Worker(''); + var __v_2 = new Worker('', {type: 'string'}); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-504729.js b/deps/v8/test/mjsunit/regress/regress-crbug-504729.js index 435cafee87..8b1f8b0899 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-504729.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-504729.js @@ -5,5 +5,5 @@ if (this.Worker) { Function.prototype.toString = "foo"; function __f_7() {} - assertThrows(function() { var __v_5 = new Worker(__f_7.toString()); }); + assertThrows(function() { var __v_5 = new Worker(__f_7.toString(), {type: 'string'}) }); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-505778.js b/deps/v8/test/mjsunit/regress/regress-crbug-505778.js index 74d96ab094..3d87ba6982 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-505778.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-505778.js @@ -3,6 +3,6 @@ // found in the LICENSE file. if (this.Worker) { - var __v_7 = new Worker('onmessage = function() {}'); + var __v_7 = new Worker('onmessage = function() {}', {type: 'string'}); __v_7.postMessage(""); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-506549.js b/deps/v8/test/mjsunit/regress/regress-crbug-506549.js index 40e162caf5..219fd10cb7 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-506549.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-506549.js @@ -5,6 +5,6 @@ if (this.Worker) { var __v_5 = {}; __v_5.__defineGetter__('byteLength', function() {foo();}); - var __v_8 = new Worker('onmessage = function() {};'); + var __v_8 = new Worker('onmessage = function() {};', {type: 'string'}); assertThrows(function() { __v_8.postMessage(__v_5); }); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-511880.js b/deps/v8/test/mjsunit/regress/regress-crbug-511880.js index f9b05ff7bc..5dceb2a733 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-511880.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-511880.js @@ -4,10 +4,10 @@ if (this.Worker) { var __v_8 = - `var __v_9 = new Worker('postMessage(42)'); + `var __v_9 = new Worker('postMessage(42)', {type: 'string'}); onmessage = function(parentMsg) { __v_9.postMessage(parentMsg); };`; - var __v_9 = new Worker(__v_8); + var __v_9 = new Worker(__v_8, {type: 'string'}); __v_9.postMessage(9); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-514081.js b/deps/v8/test/mjsunit/regress/regress-crbug-514081.js index ee3ed81300..3d99b4586b 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-514081.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-514081.js @@ -3,7 +3,7 @@ // found in the LICENSE file. if (this.Worker) { - var __v_7 = new Worker('onmessage = function() {};'); + var __v_7 = new Worker('onmessage = function() {};', {type: 'string'}); var e; var ab = new ArrayBuffer(2 * 1000 * 1000); try { diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-518747.js b/deps/v8/test/mjsunit/regress/regress-crbug-518747.js index f1787c4c4b..2a4058d401 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-518747.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-518747.js @@ -4,6 +4,6 @@ if (this.Worker) { Worker.prototype = 12; - var __v_6 = new Worker(''); + var __v_6 = new Worker('', {type: 'string'}); __v_6.postMessage([]); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-522496.js b/deps/v8/test/mjsunit/regress/regress-crbug-522496.js index e47e0a0677..4dea5a89ac 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-522496.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-522496.js @@ -3,7 +3,7 @@ // found in the LICENSE file. if (this.Worker) { - var worker = new Worker("onmessage = function(){}"); + var worker = new Worker("onmessage = function(){}", {type: 'string'}); var buf = new ArrayBuffer(); worker.postMessage(buf, [buf]); } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-687063.js b/deps/v8/test/mjsunit/regress/regress-crbug-687063.js new file mode 100644 index 0000000000..8c579331fb --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-687063.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 + +// Collect the actual properties looked up on the Proxy. +const actual = []; + +// Perform a relational comparison with a Proxy on the right hand +// side and a Symbol which cannot be turned into a Number on the +// left hand side. +function foo() { + actual.length = 0; + const lhs = Symbol(); + const rhs = new Proxy({}, { + get: function(target, property, receiver) { + actual.push(property); + return undefined; + } + }); + return lhs < rhs; +} + +assertThrows(foo, TypeError); +assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); +assertThrows(foo, TypeError); +assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); +%OptimizeFunctionOnNextCall(foo); +assertThrows(foo, TypeError); +assertEquals([Symbol.toPrimitive, 'valueOf', 'toString'], actual); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-722871.js b/deps/v8/test/mjsunit/regress/regress-crbug-722871.js index c5b7958f49..e71f083be6 100644 --- a/deps/v8/test/mjsunit/regress/regress-crbug-722871.js +++ b/deps/v8/test/mjsunit/regress/regress-crbug-722871.js @@ -7,7 +7,7 @@ let workers = []; let runningWorkers = 0; function startWorker(script) { - let worker = new Worker(script); + let worker = new Worker(script, {type: 'string'}); worker.done = false; worker.idx = workers.length; workers.push(worker); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-876443.js b/deps/v8/test/mjsunit/regress/regress-crbug-876443.js new file mode 100644 index 0000000000..33ffa020f3 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-876443.js @@ -0,0 +1,9 @@ +// 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: + +var a = [5.65]; +a.splice(0); +var b = a.splice(-4, 9, 10); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-878845.js b/deps/v8/test/mjsunit/regress/regress-crbug-878845.js new file mode 100644 index 0000000000..2913f9e849 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-878845.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. + +let arr = [, 0.1]; + +Array.prototype.lastIndexOf.call(arr, 100, { + valueOf() { + arr.length = 0; + } +}); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-879560.js b/deps/v8/test/mjsunit/regress/regress-crbug-879560.js new file mode 100644 index 0000000000..a17deadfcd --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-879560.js @@ -0,0 +1,14 @@ +// 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 + +function foo() { + var x = 1; + x = undefined; + while (x--) ; +} +foo(); +%OptimizeFunctionOnNextCall(foo); +foo(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-879898.js b/deps/v8/test/mjsunit/regress/regress-crbug-879898.js new file mode 100644 index 0000000000..c97001ae5c --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-879898.js @@ -0,0 +1,12 @@ +// 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 + +function foo() { + return Symbol.toPrimitive++; +} +assertThrows(foo); +%OptimizeFunctionOnNextCall(foo); +assertThrows(foo); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-880207.js b/deps/v8/test/mjsunit/regress/regress-crbug-880207.js new file mode 100644 index 0000000000..09796a9ff4 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-880207.js @@ -0,0 +1,37 @@ +// 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 + +(function TestOptimizedFastExpm1MinusZero() { + function foo() { + return Object.is(Math.expm1(-0), -0); + } + + assertTrue(foo()); + %OptimizeFunctionOnNextCall(foo); + assertTrue(foo()); +})(); + +(function TestOptimizedExpm1MinusZeroSlowPath() { + function f(x) { + return Object.is(Math.expm1(x), -0); + } + + function g() { + return f(-0); + } + + f(0); + // Compile function optimistically for numbers (with fast inlined + // path for Math.expm1). + %OptimizeFunctionOnNextCall(f); + // Invalidate the optimistic assumption, deopting and marking non-number + // input feedback in the call IC. + f("0"); + // Optimize again, now with non-lowered call to Math.expm1. + assertTrue(g()); + %OptimizeFunctionOnNextCall(g); + assertTrue(g()); +})(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-882233-1.js b/deps/v8/test/mjsunit/regress/regress-crbug-882233-1.js new file mode 100644 index 0000000000..197660a683 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-882233-1.js @@ -0,0 +1,17 @@ +// 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. + +// Intended to test bug [882233] on CSA fast-path. + +let array = []; +Object.defineProperty(array, 'length', {writable: false}); + +assertEquals(array.length, 0); +assertThrows(() => array.shift(), TypeError); + +let object = { length: 0 }; +Object.defineProperty(object, 'length', {writable: false}); + +assertEquals(object.length, 0); +assertThrows(() => Array.prototype.shift.call(object)); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-882233-2.js b/deps/v8/test/mjsunit/regress/regress-crbug-882233-2.js new file mode 100644 index 0000000000..565e5fbc23 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-882233-2.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 --opt + +// Intended to test bug [882233] on TF inlined (js-call-reducer) path. + +function shift_array() { + let array = []; + Object.defineProperty(array, 'length', {writable : false}); + return array.shift(); +} + +assertThrows(shift_array); +assertThrows(shift_array); +%OptimizeFunctionOnNextCall(shift_array); +assertThrows(shift_array); +assertOptimized(shift_array); + + +function shift_object() { + let object = { length: 0 }; + Object.defineProperty(object, 'length', {writable : false}); + return object.shift(); +} + +assertThrows(shift_object); +assertThrows(shift_object); +%OptimizeFunctionOnNextCall(shift_object); +assertThrows(shift_object); +assertOptimized(shift_object); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-884933.js b/deps/v8/test/mjsunit/regress/regress-crbug-884933.js new file mode 100644 index 0000000000..447d303bbf --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-884933.js @@ -0,0 +1,85 @@ +// 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 Uint8 -> Word64 conversions. +(function() { + function bar(x, y) { + return x + y; + } + + bar(0.1, 0.2); + bar(0.1, 0.2); + + function foo(dv) { + return bar(dv.getUint8(0, true), 0xFFFFFFFF); + } + + const dv = new DataView(new ArrayBuffer(8)); + assertEquals(0xFFFFFFFF, foo(dv)); + assertEquals(0xFFFFFFFF, foo(dv)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0xFFFFFFFF, foo(dv)); +})(); + +// Test Int8 -> Word64 conversions. +(function() { + function bar(x, y) { + return x + y; + } + + bar(0.1, 0.2); + bar(0.1, 0.2); + + function foo(dv) { + return bar(dv.getInt8(0, true), 0xFFFFFFFF); + } + + const dv = new DataView(new ArrayBuffer(8)); + assertEquals(0xFFFFFFFF, foo(dv)); + assertEquals(0xFFFFFFFF, foo(dv)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0xFFFFFFFF, foo(dv)); +})(); + +// Test Uint16 -> Word64 conversions. +(function() { + function bar(x, y) { + return x + y; + } + + bar(0.1, 0.2); + bar(0.1, 0.2); + + function foo(dv) { + return bar(dv.getUint16(0, true), 0xFFFFFFFF); + } + + const dv = new DataView(new ArrayBuffer(8)); + assertEquals(0xFFFFFFFF, foo(dv)); + assertEquals(0xFFFFFFFF, foo(dv)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0xFFFFFFFF, foo(dv)); +})(); + +// Test Int16 -> Word64 conversions. +(function() { + function bar(x, y) { + return x + y; + } + + bar(0.1, 0.2); + bar(0.1, 0.2); + + function foo(dv) { + return bar(dv.getInt16(0, true), 0xFFFFFFFF); + } + + const dv = new DataView(new ArrayBuffer(8)); + assertEquals(0xFFFFFFFF, foo(dv)); + assertEquals(0xFFFFFFFF, foo(dv)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(0xFFFFFFFF, foo(dv)); +})(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-885404.js b/deps/v8/test/mjsunit/regress/regress-crbug-885404.js new file mode 100644 index 0000000000..534b883a01 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-885404.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: --verify-heap --expose-gc + +var ab = new ArrayBuffer(2); +try { new Int32Array(ab); } catch (e) { } +assertEquals(2, ab.byteLength); +gc(); +assertEquals(2, ab.byteLength); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-887891.js b/deps/v8/test/mjsunit/regress/regress-crbug-887891.js new file mode 100644 index 0000000000..0e72ab263a --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-887891.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. + +// Flags: --allow-natives-syntax --verify-heap + +const l = 1000000000; +const a = []; +function foo() { var x = new Int32Array(l); } +try { foo(); } catch (e) { } diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-888825.js b/deps/v8/test/mjsunit/regress/regress-crbug-888825.js new file mode 100644 index 0000000000..9aa52d62e1 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-888825.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. + +eval("((a=function g() { function g() {}}) => {})();"); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-890243.js b/deps/v8/test/mjsunit/regress/regress-crbug-890243.js new file mode 100644 index 0000000000..0d889b2787 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-890243.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 + +// We need a SpeculativeNumberAdd with Number feedback. +function bar(x) { return x + x; } +bar(0.1); + +// We also need an indirection via an object field such +// that only after escape analysis TurboFan can figure +// out that the value `y` is actually a Number in the +// safe integer range. +function baz(y) { return {y}; } +baz(null); baz(0); + +// Now we can put all of that together to get a kRepBit +// use of a kWord64 value (on 64-bit architectures). +function foo(o) { + return !baz(bar(o.x)).y; +} + +assertFalse(foo({x:1})); +assertFalse(foo({x:1})); +%OptimizeFunctionOnNextCall(foo); +assertFalse(foo({x:1})); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-891627.js b/deps/v8/test/mjsunit/regress/regress-crbug-891627.js new file mode 100644 index 0000000000..afe4093c96 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-891627.js @@ -0,0 +1,43 @@ +// 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 + +// We need a NumberModulus, so we make sure that we have a +// SpeculativeNumberModulus with Number feedback, and later +// on use it with known Number inputs (via the bitwise or), +// such that JSTypedLowering turns it into the NumberModulus. +function bar(x) { return x % 2; } +bar(0.1); + +// Check that the Word32->Float64 conversion works properly. +(function() { + function foo(x) { + // The NumberEqual identifies 0 and -0. + return bar(x | -1) == 4294967295; + } + + assertFalse(foo(1)); + assertFalse(foo(0)); + %OptimizeFunctionOnNextCall(foo); + assertFalse(foo(1)); + assertFalse(foo(0)); +})(); + +// Check that the Word32->Word32 conversion works properly. +(function() { + function makeFoo(y) { + return function foo(x) { + return bar(x | -1) == y; + } + } + makeFoo(0); // Defeat the function context specialization. + const foo = makeFoo(1); + + assertFalse(foo(1)); + assertFalse(foo(0)); + %OptimizeFunctionOnNextCall(foo); + assertFalse(foo(1)); + assertFalse(foo(0)); +})(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-892472-1.js b/deps/v8/test/mjsunit/regress/regress-crbug-892472-1.js new file mode 100644 index 0000000000..d6332fd399 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-892472-1.js @@ -0,0 +1,9 @@ +// 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: --async-stack-traces + +const a = /x/; +a.exec = RegExp.prototype.test; +assertThrows(() => RegExp.prototype.test.call(a)); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-892472-2.js b/deps/v8/test/mjsunit/regress/regress-crbug-892472-2.js new file mode 100644 index 0000000000..0f9a2c1816 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-892472-2.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. + +// Flags: --async-stack-traces + +assertThrows(_ => '' + {toString: Object.prototype.toLocaleString}); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-897514.js b/deps/v8/test/mjsunit/regress/regress-crbug-897514.js new file mode 100644 index 0000000000..822a6bcf5e --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-897514.js @@ -0,0 +1,26 @@ +// 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 + +// Create transtion => 'get a'. +let o = {}; +Object.defineProperty(o, 'a', { + enumerable: true, + configurable: true, + get: function() { return 7 } +}); + +function spread(o) { + let result = { ...o }; + %HeapObjectVerify(result); + return result; +} + +for (let i = 0; i<3; i++) { + spread([]); + // Use different transition => 'a'. + spread({ a:0 }); + spread("abc"); +} diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-899524.js b/deps/v8/test/mjsunit/regress/regress-crbug-899524.js new file mode 100644 index 0000000000..32d28c9b09 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-899524.js @@ -0,0 +1,33 @@ +// 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 + +function empty() { } + +function baz(expected, found) { + var start = ""; + found.length, start + 'x'; + if (expected.length === found.length) { + for (var i = 0; i < expected.length; ++i) { + empty(found[i]); + } + } +} + +baz([1], new (class A extends Array {})); + +(function () { + "use strict"; + function bar() { + baz([1,2], arguments); + } + function foo() { + bar(2147483648,-[]); + } + foo(); + foo(); + %OptimizeFunctionOnNextCall(foo); + foo(); +})(); diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-90771.js b/deps/v8/test/mjsunit/regress/regress-crbug-90771.js new file mode 100644 index 0000000000..b541ff8cc2 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-crbug-90771.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. + + +// Flags: --allow-natives-syntax +function target() {}; + +for (let key of Object.getOwnPropertyNames(this)) { + try { + let newTarget = this[key]; + let arg = target; + Reflect.construct(target, arg, newTarget); + } catch {} +} diff --git a/deps/v8/test/mjsunit/regress/regress-splice-large-index.js b/deps/v8/test/mjsunit/regress/regress-splice-large-index.js deleted file mode 100644 index 1f4eb9ce59..0000000000 --- a/deps/v8/test/mjsunit/regress/regress-splice-large-index.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 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. - -var a = []; -a[0xfffffffe] = 10; -assertThrows("a.unshift(1);", RangeError); -assertEquals(0xffffffff, a.length); -assertEquals(10, a[0xffffffff]); -assertEquals(0xffffffff, a.length); -assertEquals(undefined, a[0xfffffffe]); - -a = [1,2,3]; -a[0xfffffffe] = 10; -assertThrows("a.splice(1,1,7,7,7,7,7);", RangeError); -assertEquals([1,7,7,7,7,7,3], a.slice(0, 7)); -assertEquals(0xffffffff, a.length); -assertEquals(10, a[0xfffffffe + 5 - 1]); diff --git a/deps/v8/test/mjsunit/regress/regress-v8-7682.js b/deps/v8/test/mjsunit/regress/regress-v8-7682.js index 4f9b2e7d60..86f12f5b74 100644 --- a/deps/v8/test/mjsunit/regress/regress-v8-7682.js +++ b/deps/v8/test/mjsunit/regress/regress-v8-7682.js @@ -18,5 +18,9 @@ class MyArrayLike { const xs = new MyArrayLike(); Array.prototype.sort.call(xs); -assertEquals(1, xs[0]); -assertEquals(2, xs[1]); +// Sort-order is implementation-defined as we actually hit two conditions from +// the spec: +// - "xs" is sparse and IsExtensible(xs) is false (its frozen). +// - "xs" is sparse and the prototype has properties in the sort range. +assertEquals(2, xs[0]); +assertEquals(1, xs[1]); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-801850.js b/deps/v8/test/mjsunit/regress/wasm/regress-801850.js index ad6ff4c432..b56af694a9 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-801850.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-801850.js @@ -7,5 +7,5 @@ load('test/mjsunit/wasm/wasm-module-builder.js'); var builder = new WasmModuleBuilder(); let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};'); +var worker = new Worker('onmessage = function() {};', {type: 'string'}); worker.postMessage(module) diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-803427.js b/deps/v8/test/mjsunit/regress/wasm/regress-803427.js index 833b140fd4..d3ab31b4c9 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-803427.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-803427.js @@ -9,5 +9,5 @@ load('test/mjsunit/wasm/wasm-module-builder.js'); var builder = new WasmModuleBuilder(); let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};'); +var worker = new Worker('onmessage = function() {};', {type: 'string'}); worker.postMessage(module) diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-8059.js b/deps/v8/test/mjsunit/regress/wasm/regress-8059.js index 5c421c4ee4..c30ed152f8 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-8059.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-8059.js @@ -31,7 +31,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); Realm.shared = { m:module, s:workerScript }; let realmScript = ` - let worker = new Worker(Realm.shared.s); + let worker = new Worker(Realm.shared.s, {type: 'string'}); worker.postMessage(Realm.shared.m); let message = worker.getMessage(); worker.terminate(); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-808012.js b/deps/v8/test/mjsunit/regress/wasm/regress-808012.js index 1b91f226a8..ae613ceb54 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-808012.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-808012.js @@ -10,5 +10,5 @@ load('test/mjsunit/wasm/wasm-module-builder.js'); const builder = new WasmModuleBuilder(); builder.addFunction('test', kSig_i_i).addBody([kExprUnreachable]); let module = new WebAssembly.Module(builder.toBuffer()); -var worker = new Worker('onmessage = function() {};'); +var worker = new Worker('onmessage = function() {};', {type: 'string'}); worker.postMessage(module); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-808848.js b/deps/v8/test/mjsunit/regress/wasm/regress-808848.js index 69423b954d..bcf8469a14 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-808848.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-808848.js @@ -60,7 +60,7 @@ let worker_onmessage = function(msg) { } let workerScript = "onmessage = " + worker_onmessage.toString(); -let worker = new Worker(workerScript); +let worker = new Worker(workerScript, {type: 'string'}); worker.postMessage({serialized_m1, m1_bytes}); // Wait for worker to finish. diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-8094.js b/deps/v8/test/mjsunit/regress/wasm/regress-8094.js new file mode 100644 index 0000000000..a35d583a4a --- /dev/null +++ b/deps/v8/test/mjsunit/regress/wasm/regress-8094.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: --expose-wasm --experimental-wasm-eh + +load("test/mjsunit/wasm/wasm-constants.js"); +load("test/mjsunit/wasm/wasm-module-builder.js"); + +// Instantiate a throwing module. +var builder = new WasmModuleBuilder(); +builder.addException(kSig_v_v); +builder.addFunction("propel", kSig_v_v) + .addBody([kExprThrow, 0]) + .exportFunc(); +var instance = builder.instantiate(); + +// Catch the exception. +var exception; +try { + instance.exports.propel(); +} catch (e) { + exception = e; +} + +// Check that the exception is an instance of the correct error function and +// that no extraneous properties exist. Setting such properties could be +// observable by JavaScript and could break compatibility. +assertInstanceof(exception, WebAssembly.RuntimeError); +assertArrayEquals(["stack", "message"], Object.getOwnPropertyNames(exception)); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-8095.js b/deps/v8/test/mjsunit/regress/wasm/regress-8095.js new file mode 100644 index 0000000000..66ffc0d4b7 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/wasm/regress-8095.js @@ -0,0 +1,25 @@ +// 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: --expose-wasm --experimental-wasm-eh + +load("test/mjsunit/wasm/wasm-constants.js"); +load("test/mjsunit/wasm/wasm-module-builder.js"); + +// Prepare a special error object to throw. +var error = new Error("my error"); +error.__proto__ = new Proxy(new Error(), { + has(target, property, receiver) { + assertUnreachable(); + } +}); + +// Throw it through a WebAssembly module. +var builder = new WasmModuleBuilder(); +builder.addImport('mod', 'fun', kSig_v_v); +builder.addFunction("funnel", kSig_v_v) + .addBody([kExprCallFunction, 0]) + .exportFunc(); +var instance = builder.instantiate({ mod: {fun: function() { throw error }}}); +assertThrows(instance.exports.funnel, Error); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-810973.js b/deps/v8/test/mjsunit/regress/wasm/regress-810973.js index 5a776884ee..bd3d902772 100644 --- a/deps/v8/test/mjsunit/regress/wasm/regress-810973.js +++ b/deps/v8/test/mjsunit/regress/wasm/regress-810973.js @@ -12,7 +12,7 @@ function MjsUnitAssertionError() { }; let __v_692 = `(function module() { "use asm";function foo(`; const __v_693 = -3695; +1005; for (let __v_695 = 0; __v_695 < __v_693; ++__v_695) { __v_692 += `arg${__v_695},`; } @@ -28,5 +28,6 @@ for (let __v_697 = 0; __v_697 < __v_693; ++__v_697) { } __v_692 += "1.0)|0;}"; - __v_692 += "return bar})()()"; +__v_692 += "return bar})()()"; + const __v_694 = eval(__v_692); diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-810973b.js b/deps/v8/test/mjsunit/regress/wasm/regress-810973b.js new file mode 100644 index 0000000000..227bf55fc0 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/wasm/regress-810973b.js @@ -0,0 +1,1209 @@ +// 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. + +(function module() { + "use asm"; + function foo( + a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, + a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, + a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, + a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, + a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, + a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, + a62, a63, a64, a65, a66, a67, a68, a69, a70, a71, + a72, a73, a74, a75, a76, a77, a78, a79, a80, a81, + a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, + a92, a93, a94, a95, a96, a97, a98, a99, a100, a101, + a102, a103, a104, a105, a106, a107, a108, a109, a110, + a111, a112, a113, a114, a115, a116, a117, a118, a119, + a120, a121, a122, a123, a124, a125, a126, a127, a128, + a129, a130, a131, a132, a133, a134, a135, a136, a137, + a138, a139, a140, a141, a142, a143, a144, a145, a146, + a147, a148, a149, a150, a151, a152, a153, a154, a155, + a156, a157, a158, a159, a160, a161, a162, a163, a164, + a165, a166, a167, a168, a169, a170, a171, a172, a173, + a174, a175, a176, a177, a178, a179, a180, a181, a182, + a183, a184, a185, a186, a187, a188, a189, a190, a191, + a192, a193, a194, a195, a196, a197, a198, a199, a200, + a201, a202, a203, a204, a205, a206, a207, a208, a209, + a210, a211, a212, a213, a214, a215, a216, a217, a218, + a219, a220, a221, a222, a223, a224, a225, a226, a227, + a228, a229, a230, a231, a232, a233, a234, a235, a236, + a237, a238, a239, a240, a241, a242, a243, a244, a245, + a246, a247, a248, a249, a250, a251, a252, a253, a254, + a255, a256, a257, a258, a259, a260, a261, a262, a263, + a264, a265, a266, a267, a268, a269, a270, a271, a272, + a273, a274, a275, a276, a277, a278, a279, a280, a281, + a282, a283, a284, a285, a286, a287, a288, a289, a290, + a291, a292, a293, a294, a295, a296, a297, a298, a299, + a300, a301, a302, a303, a304, a305, a306, a307, a308, + a309, a310, a311, a312, a313, a314, a315, a316, a317, + a318, a319, a320, a321, a322, a323, a324, a325, a326, + a327, a328, a329, a330, a331, a332, a333, a334, a335, + a336, a337, a338, a339, a340, a341, a342, a343, a344, + a345, a346, a347, a348, a349, a350, a351, a352, a353, + a354, a355, a356, a357, a358, a359, a360, a361, a362, + a363, a364, a365, a366, a367, a368, a369, a370, a371, + a372, a373, a374, a375, a376, a377, a378, a379, a380, + a381, a382, a383, a384, a385, a386, a387, a388, a389, + a390, a391, a392, a393, a394, a395, a396, a397, a398, + a399, a400, a401, a402, a403, a404, a405, a406, a407, + a408, a409, a410, a411, a412, a413, a414, a415, a416, + a417, a418, a419, a420, a421, a422, a423, a424, a425, + a426, a427, a428, a429, a430, a431, a432, a433, a434, + a435, a436, a437, a438, a439, a440, a441, a442, a443, + a444, a445, a446, a447, a448, a449, a450, a451, a452, + a453, a454, a455, a456, a457, a458, a459, a460, a461, + a462, a463, a464, a465, a466, a467, a468, a469, a470, + a471, a472, a473, a474, a475, a476, a477, a478, a479, + a480, a481, a482, a483, a484, a485, a486, a487, a488, + a489, a490, a491, a492, a493, a494, a495, a496, a497, + a498, a499, a500, a501, a502, a503, a504, a505, a506, + a507, a508, a509, a510, a511, a512, a513, a514, a515, + a516, a517, a518, a519, a520, a521, a522, a523, a524, + a525, a526, a527, a528, a529, a530, a531, a532, a533, + a534, a535, a536, a537, a538, a539, a540, a541, a542, + a543, a544, a545, a546, a547, a548, a549, a550, a551, + a552, a553, a554, a555, a556, a557, a558, a559, a560, + a561, a562, a563, a564, a565, a566, a567, a568, a569, + a570, a571, a572, a573, a574, a575, a576, a577, a578, + a579, a580, a581, a582, a583, a584, a585, a586, a587, + a588, a589, a590, a591, a592, a593, a594, a595, a596, + a597, a598, a599, a600, a601, a602, a603, a604, a605, + a606, a607, a608, a609, a610, a611, a612, a613, a614, + a615, a616, a617, a618, a619, a620, a621, a622, a623, + a624, a625, a626, a627, a628, a629, a630, a631, a632, + a633, a634, a635, a636, a637, a638, a639, a640, a641, + a642, a643, a644, a645, a646, a647, a648, a649, a650, + a651, a652, a653, a654, a655, a656, a657, a658, a659, + a660, a661, a662, a663, a664, a665, a666, a667, a668, + a669, a670, a671, a672, a673, a674, a675, a676, a677, + a678, a679, a680, a681, a682, a683, a684, a685, a686, + a687, a688, a689, a690, a691, a692, a693, a694, a695, + a696, a697, a698, a699, a700, a701, a702, a703, a704, + a705, a706, a707, a708, a709, a710, a711, a712, a713, + a714, a715, a716, a717, a718, a719, a720, a721, a722, + a723, a724, a725, a726, a727, a728, a729, a730, a731, + a732, a733, a734, a735, a736, a737, a738, a739, a740, + a741, a742, a743, a744, a745, a746, a747, a748, a749, + a750, a751, a752, a753, a754, a755, a756, a757, a758, + a759, a760, a761, a762, a763, a764, a765, a766, a767, + a768, a769, a770, a771, a772, a773, a774, a775, a776, + a777, a778, a779, a780, a781, a782, a783, a784, a785, + a786, a787, a788, a789, a790, a791, a792, a793, a794, + a795, a796, a797, a798, a799, a800, a801, a802, a803, + a804, a805, a806, a807, a808, a809, a810, a811, a812, + a813, a814, a815, a816, a817, a818, a819, a820, a821, + a822, a823, a824, a825, a826, a827, a828, a829, a830, + a831, a832, a833, a834, a835, a836, a837, a838, a839, + a840, a841, a842, a843, a844, a845, a846, a847, a848, + a849, a850, a851, a852, a853, a854, a855, a856, a857, + a858, a859, a860, a861, a862, a863, a864, a865, a866, + a867, a868, a869, a870, a871, a872, a873, a874, a875, + a876, a877, a878, a879, a880, a881, a882, a883, a884, + a885, a886, a887, a888, a889, a890, a891, a892, a893, + a894, a895, a896, a897, a898, a899, a900, a901, a902, + a903, a904, a905, a906, a907, a908, a909, a910, a911, + a912, a913, a914, a915, a916, a917, a918, a919, a920, + a921, a922, a923, a924, a925, a926, a927, a928, a929, + a930, a931, a932, a933, a934, a935, a936, a937, a938, + a939, a940, a941, a942, a943, a944, a945, a946, a947, + a948, a949, a950, a951, a952, a953, a954, a955, a956, + a957, a958, a959, a960, a961, a962, a963, a964, a965, + a966, a967, a968, a969, a970, a971, a972, a973, a974, + a975, a976, a977, a978, a979, a980, a981, a982, a983, + a984, a985, a986, a987, a988, a989, a990, a991, a992, + a993, a994, a995, a996, a997, a998, a999, a1000, a1001, + a1002, a1003, a1004, a1005) { + a0 = +a0; + a1 = +a1; + a2 = +a2; + a3 = +a3; + a4 = +a4; + a5 = +a5; + a6 = +a6; + a7 = +a7; + a8 = +a8; + a9 = +a9; + a10 = +a10; + a11 = +a11; + a12 = +a12; + a13 = +a13; + a14 = +a14; + a15 = +a15; + a16 = +a16; + a17 = +a17; + a18 = +a18; + a19 = +a19; + a20 = +a20; + a21 = +a21; + a22 = +a22; + a23 = +a23; + a24 = +a24; + a25 = +a25; + a26 = +a26; + a27 = +a27; + a28 = +a28; + a29 = +a29; + a30 = +a30; + a31 = +a31; + a32 = +a32; + a33 = +a33; + a34 = +a34; + a35 = +a35; + a36 = +a36; + a37 = +a37; + a38 = +a38; + a39 = +a39; + a40 = +a40; + a41 = +a41; + a42 = +a42; + a43 = +a43; + a44 = +a44; + a45 = +a45; + a46 = +a46; + a47 = +a47; + a48 = +a48; + a49 = +a49; + a50 = +a50; + a51 = +a51; + a52 = +a52; + a53 = +a53; + a54 = +a54; + a55 = +a55; + a56 = +a56; + a57 = +a57; + a58 = +a58; + a59 = +a59; + a60 = +a60; + a61 = +a61; + a62 = +a62; + a63 = +a63; + a64 = +a64; + a65 = +a65; + a66 = +a66; + a67 = +a67; + a68 = +a68; + a69 = +a69; + a70 = +a70; + a71 = +a71; + a72 = +a72; + a73 = +a73; + a74 = +a74; + a75 = +a75; + a76 = +a76; + a77 = +a77; + a78 = +a78; + a79 = +a79; + a80 = +a80; + a81 = +a81; + a82 = +a82; + a83 = +a83; + a84 = +a84; + a85 = +a85; + a86 = +a86; + a87 = +a87; + a88 = +a88; + a89 = +a89; + a90 = +a90; + a91 = +a91; + a92 = +a92; + a93 = +a93; + a94 = +a94; + a95 = +a95; + a96 = +a96; + a97 = +a97; + a98 = +a98; + a99 = +a99; + a100 = +a100; + a101 = +a101; + a102 = +a102; + a103 = +a103; + a104 = +a104; + a105 = +a105; + a106 = +a106; + a107 = +a107; + a108 = +a108; + a109 = +a109; + a110 = +a110; + a111 = +a111; + a112 = +a112; + a113 = +a113; + a114 = +a114; + a115 = +a115; + a116 = +a116; + a117 = +a117; + a118 = +a118; + a119 = +a119; + a120 = +a120; + a121 = +a121; + a122 = +a122; + a123 = +a123; + a124 = +a124; + a125 = +a125; + a126 = +a126; + a127 = +a127; + a128 = +a128; + a129 = +a129; + a130 = +a130; + a131 = +a131; + a132 = +a132; + a133 = +a133; + a134 = +a134; + a135 = +a135; + a136 = +a136; + a137 = +a137; + a138 = +a138; + a139 = +a139; + a140 = +a140; + a141 = +a141; + a142 = +a142; + a143 = +a143; + a144 = +a144; + a145 = +a145; + a146 = +a146; + a147 = +a147; + a148 = +a148; + a149 = +a149; + a150 = +a150; + a151 = +a151; + a152 = +a152; + a153 = +a153; + a154 = +a154; + a155 = +a155; + a156 = +a156; + a157 = +a157; + a158 = +a158; + a159 = +a159; + a160 = +a160; + a161 = +a161; + a162 = +a162; + a163 = +a163; + a164 = +a164; + a165 = +a165; + a166 = +a166; + a167 = +a167; + a168 = +a168; + a169 = +a169; + a170 = +a170; + a171 = +a171; + a172 = +a172; + a173 = +a173; + a174 = +a174; + a175 = +a175; + a176 = +a176; + a177 = +a177; + a178 = +a178; + a179 = +a179; + a180 = +a180; + a181 = +a181; + a182 = +a182; + a183 = +a183; + a184 = +a184; + a185 = +a185; + a186 = +a186; + a187 = +a187; + a188 = +a188; + a189 = +a189; + a190 = +a190; + a191 = +a191; + a192 = +a192; + a193 = +a193; + a194 = +a194; + a195 = +a195; + a196 = +a196; + a197 = +a197; + a198 = +a198; + a199 = +a199; + a200 = +a200; + a201 = +a201; + a202 = +a202; + a203 = +a203; + a204 = +a204; + a205 = +a205; + a206 = +a206; + a207 = +a207; + a208 = +a208; + a209 = +a209; + a210 = +a210; + a211 = +a211; + a212 = +a212; + a213 = +a213; + a214 = +a214; + a215 = +a215; + a216 = +a216; + a217 = +a217; + a218 = +a218; + a219 = +a219; + a220 = +a220; + a221 = +a221; + a222 = +a222; + a223 = +a223; + a224 = +a224; + a225 = +a225; + a226 = +a226; + a227 = +a227; + a228 = +a228; + a229 = +a229; + a230 = +a230; + a231 = +a231; + a232 = +a232; + a233 = +a233; + a234 = +a234; + a235 = +a235; + a236 = +a236; + a237 = +a237; + a238 = +a238; + a239 = +a239; + a240 = +a240; + a241 = +a241; + a242 = +a242; + a243 = +a243; + a244 = +a244; + a245 = +a245; + a246 = +a246; + a247 = +a247; + a248 = +a248; + a249 = +a249; + a250 = +a250; + a251 = +a251; + a252 = +a252; + a253 = +a253; + a254 = +a254; + a255 = +a255; + a256 = +a256; + a257 = +a257; + a258 = +a258; + a259 = +a259; + a260 = +a260; + a261 = +a261; + a262 = +a262; + a263 = +a263; + a264 = +a264; + a265 = +a265; + a266 = +a266; + a267 = +a267; + a268 = +a268; + a269 = +a269; + a270 = +a270; + a271 = +a271; + a272 = +a272; + a273 = +a273; + a274 = +a274; + a275 = +a275; + a276 = +a276; + a277 = +a277; + a278 = +a278; + a279 = +a279; + a280 = +a280; + a281 = +a281; + a282 = +a282; + a283 = +a283; + a284 = +a284; + a285 = +a285; + a286 = +a286; + a287 = +a287; + a288 = +a288; + a289 = +a289; + a290 = +a290; + a291 = +a291; + a292 = +a292; + a293 = +a293; + a294 = +a294; + a295 = +a295; + a296 = +a296; + a297 = +a297; + a298 = +a298; + a299 = +a299; + a300 = +a300; + a301 = +a301; + a302 = +a302; + a303 = +a303; + a304 = +a304; + a305 = +a305; + a306 = +a306; + a307 = +a307; + a308 = +a308; + a309 = +a309; + a310 = +a310; + a311 = +a311; + a312 = +a312; + a313 = +a313; + a314 = +a314; + a315 = +a315; + a316 = +a316; + a317 = +a317; + a318 = +a318; + a319 = +a319; + a320 = +a320; + a321 = +a321; + a322 = +a322; + a323 = +a323; + a324 = +a324; + a325 = +a325; + a326 = +a326; + a327 = +a327; + a328 = +a328; + a329 = +a329; + a330 = +a330; + a331 = +a331; + a332 = +a332; + a333 = +a333; + a334 = +a334; + a335 = +a335; + a336 = +a336; + a337 = +a337; + a338 = +a338; + a339 = +a339; + a340 = +a340; + a341 = +a341; + a342 = +a342; + a343 = +a343; + a344 = +a344; + a345 = +a345; + a346 = +a346; + a347 = +a347; + a348 = +a348; + a349 = +a349; + a350 = +a350; + a351 = +a351; + a352 = +a352; + a353 = +a353; + a354 = +a354; + a355 = +a355; + a356 = +a356; + a357 = +a357; + a358 = +a358; + a359 = +a359; + a360 = +a360; + a361 = +a361; + a362 = +a362; + a363 = +a363; + a364 = +a364; + a365 = +a365; + a366 = +a366; + a367 = +a367; + a368 = +a368; + a369 = +a369; + a370 = +a370; + a371 = +a371; + a372 = +a372; + a373 = +a373; + a374 = +a374; + a375 = +a375; + a376 = +a376; + a377 = +a377; + a378 = +a378; + a379 = +a379; + a380 = +a380; + a381 = +a381; + a382 = +a382; + a383 = +a383; + a384 = +a384; + a385 = +a385; + a386 = +a386; + a387 = +a387; + a388 = +a388; + a389 = +a389; + a390 = +a390; + a391 = +a391; + a392 = +a392; + a393 = +a393; + a394 = +a394; + a395 = +a395; + a396 = +a396; + a397 = +a397; + a398 = +a398; + a399 = +a399; + a400 = +a400; + a401 = +a401; + a402 = +a402; + a403 = +a403; + a404 = +a404; + a405 = +a405; + a406 = +a406; + a407 = +a407; + a408 = +a408; + a409 = +a409; + a410 = +a410; + a411 = +a411; + a412 = +a412; + a413 = +a413; + a414 = +a414; + a415 = +a415; + a416 = +a416; + a417 = +a417; + a418 = +a418; + a419 = +a419; + a420 = +a420; + a421 = +a421; + a422 = +a422; + a423 = +a423; + a424 = +a424; + a425 = +a425; + a426 = +a426; + a427 = +a427; + a428 = +a428; + a429 = +a429; + a430 = +a430; + a431 = +a431; + a432 = +a432; + a433 = +a433; + a434 = +a434; + a435 = +a435; + a436 = +a436; + a437 = +a437; + a438 = +a438; + a439 = +a439; + a440 = +a440; + a441 = +a441; + a442 = +a442; + a443 = +a443; + a444 = +a444; + a445 = +a445; + a446 = +a446; + a447 = +a447; + a448 = +a448; + a449 = +a449; + a450 = +a450; + a451 = +a451; + a452 = +a452; + a453 = +a453; + a454 = +a454; + a455 = +a455; + a456 = +a456; + a457 = +a457; + a458 = +a458; + a459 = +a459; + a460 = +a460; + a461 = +a461; + a462 = +a462; + a463 = +a463; + a464 = +a464; + a465 = +a465; + a466 = +a466; + a467 = +a467; + a468 = +a468; + a469 = +a469; + a470 = +a470; + a471 = +a471; + a472 = +a472; + a473 = +a473; + a474 = +a474; + a475 = +a475; + a476 = +a476; + a477 = +a477; + a478 = +a478; + a479 = +a479; + a480 = +a480; + a481 = +a481; + a482 = +a482; + a483 = +a483; + a484 = +a484; + a485 = +a485; + a486 = +a486; + a487 = +a487; + a488 = +a488; + a489 = +a489; + a490 = +a490; + a491 = +a491; + a492 = +a492; + a493 = +a493; + a494 = +a494; + a495 = +a495; + a496 = +a496; + a497 = +a497; + a498 = +a498; + a499 = +a499; + a500 = +a500; + a501 = +a501; + a502 = +a502; + a503 = +a503; + a504 = +a504; + a505 = +a505; + a506 = +a506; + a507 = +a507; + a508 = +a508; + a509 = +a509; + a510 = +a510; + a511 = +a511; + a512 = +a512; + a513 = +a513; + a514 = +a514; + a515 = +a515; + a516 = +a516; + a517 = +a517; + a518 = +a518; + a519 = +a519; + a520 = +a520; + a521 = +a521; + a522 = +a522; + a523 = +a523; + a524 = +a524; + a525 = +a525; + a526 = +a526; + a527 = +a527; + a528 = +a528; + a529 = +a529; + a530 = +a530; + a531 = +a531; + a532 = +a532; + a533 = +a533; + a534 = +a534; + a535 = +a535; + a536 = +a536; + a537 = +a537; + a538 = +a538; + a539 = +a539; + a540 = +a540; + a541 = +a541; + a542 = +a542; + a543 = +a543; + a544 = +a544; + a545 = +a545; + a546 = +a546; + a547 = +a547; + a548 = +a548; + a549 = +a549; + a550 = +a550; + a551 = +a551; + a552 = +a552; + a553 = +a553; + a554 = +a554; + a555 = +a555; + a556 = +a556; + a557 = +a557; + a558 = +a558; + a559 = +a559; + a560 = +a560; + a561 = +a561; + a562 = +a562; + a563 = +a563; + a564 = +a564; + a565 = +a565; + a566 = +a566; + a567 = +a567; + a568 = +a568; + a569 = +a569; + a570 = +a570; + a571 = +a571; + a572 = +a572; + a573 = +a573; + a574 = +a574; + a575 = +a575; + a576 = +a576; + a577 = +a577; + a578 = +a578; + a579 = +a579; + a580 = +a580; + a581 = +a581; + a582 = +a582; + a583 = +a583; + a584 = +a584; + a585 = +a585; + a586 = +a586; + a587 = +a587; + a588 = +a588; + a589 = +a589; + a590 = +a590; + a591 = +a591; + a592 = +a592; + a593 = +a593; + a594 = +a594; + a595 = +a595; + a596 = +a596; + a597 = +a597; + a598 = +a598; + a599 = +a599; + a600 = +a600; + a601 = +a601; + a602 = +a602; + a603 = +a603; + a604 = +a604; + a605 = +a605; + a606 = +a606; + a607 = +a607; + a608 = +a608; + a609 = +a609; + a610 = +a610; + a611 = +a611; + a612 = +a612; + a613 = +a613; + a614 = +a614; + a615 = +a615; + a616 = +a616; + a617 = +a617; + a618 = +a618; + a619 = +a619; + a620 = +a620; + a621 = +a621; + a622 = +a622; + a623 = +a623; + a624 = +a624; + a625 = +a625; + a626 = +a626; + a627 = +a627; + a628 = +a628; + a629 = +a629; + a630 = +a630; + a631 = +a631; + a632 = +a632; + a633 = +a633; + a634 = +a634; + a635 = +a635; + a636 = +a636; + a637 = +a637; + a638 = +a638; + a639 = +a639; + a640 = +a640; + a641 = +a641; + a642 = +a642; + a643 = +a643; + a644 = +a644; + a645 = +a645; + a646 = +a646; + a647 = +a647; + a648 = +a648; + a649 = +a649; + a650 = +a650; + a651 = +a651; + a652 = +a652; + a653 = +a653; + a654 = +a654; + a655 = +a655; + a656 = +a656; + a657 = +a657; + a658 = +a658; + a659 = +a659; + a660 = +a660; + a661 = +a661; + a662 = +a662; + a663 = +a663; + a664 = +a664; + a665 = +a665; + a666 = +a666; + a667 = +a667; + a668 = +a668; + a669 = +a669; + a670 = +a670; + a671 = +a671; + a672 = +a672; + a673 = +a673; + a674 = +a674; + a675 = +a675; + a676 = +a676; + a677 = +a677; + a678 = +a678; + a679 = +a679; + a680 = +a680; + a681 = +a681; + a682 = +a682; + a683 = +a683; + a684 = +a684; + a685 = +a685; + a686 = +a686; + a687 = +a687; + a688 = +a688; + a689 = +a689; + a690 = +a690; + a691 = +a691; + a692 = +a692; + a693 = +a693; + a694 = +a694; + a695 = +a695; + a696 = +a696; + a697 = +a697; + a698 = +a698; + a699 = +a699; + a700 = +a700; + a701 = +a701; + a702 = +a702; + a703 = +a703; + a704 = +a704; + a705 = +a705; + a706 = +a706; + a707 = +a707; + a708 = +a708; + a709 = +a709; + a710 = +a710; + a711 = +a711; + a712 = +a712; + a713 = +a713; + a714 = +a714; + a715 = +a715; + a716 = +a716; + a717 = +a717; + a718 = +a718; + a719 = +a719; + a720 = +a720; + a721 = +a721; + a722 = +a722; + a723 = +a723; + a724 = +a724; + a725 = +a725; + a726 = +a726; + a727 = +a727; + a728 = +a728; + a729 = +a729; + a730 = +a730; + a731 = +a731; + a732 = +a732; + a733 = +a733; + a734 = +a734; + a735 = +a735; + a736 = +a736; + a737 = +a737; + a738 = +a738; + a739 = +a739; + a740 = +a740; + a741 = +a741; + a742 = +a742; + a743 = +a743; + a744 = +a744; + a745 = +a745; + a746 = +a746; + a747 = +a747; + a748 = +a748; + a749 = +a749; + a750 = +a750; + a751 = +a751; + a752 = +a752; + a753 = +a753; + a754 = +a754; + a755 = +a755; + a756 = +a756; + a757 = +a757; + a758 = +a758; + a759 = +a759; + a760 = +a760; + a761 = +a761; + a762 = +a762; + a763 = +a763; + a764 = +a764; + a765 = +a765; + a766 = +a766; + a767 = +a767; + a768 = +a768; + a769 = +a769; + a770 = +a770; + a771 = +a771; + a772 = +a772; + a773 = +a773; + a774 = +a774; + a775 = +a775; + a776 = +a776; + a777 = +a777; + a778 = +a778; + a779 = +a779; + a780 = +a780; + a781 = +a781; + a782 = +a782; + a783 = +a783; + a784 = +a784; + a785 = +a785; + a786 = +a786; + a787 = +a787; + a788 = +a788; + a789 = +a789; + a790 = +a790; + a791 = +a791; + a792 = +a792; + a793 = +a793; + a794 = +a794; + a795 = +a795; + a796 = +a796; + a797 = +a797; + a798 = +a798; + a799 = +a799; + a800 = +a800; + a801 = +a801; + a802 = +a802; + a803 = +a803; + a804 = +a804; + a805 = +a805; + a806 = +a806; + a807 = +a807; + a808 = +a808; + a809 = +a809; + a810 = +a810; + a811 = +a811; + a812 = +a812; + a813 = +a813; + a814 = +a814; + a815 = +a815; + a816 = +a816; + a817 = +a817; + a818 = +a818; + a819 = +a819; + a820 = +a820; + a821 = +a821; + a822 = +a822; + a823 = +a823; + a824 = +a824; + a825 = +a825; + a826 = +a826; + a827 = +a827; + a828 = +a828; + a829 = +a829; + a830 = +a830; + a831 = +a831; + a832 = +a832; + a833 = +a833; + a834 = +a834; + a835 = +a835; + a836 = +a836; + a837 = +a837; + a838 = +a838; + a839 = +a839; + a840 = +a840; + a841 = +a841; + a842 = +a842; + a843 = +a843; + a844 = +a844; + a845 = +a845; + a846 = +a846; + a847 = +a847; + a848 = +a848; + a849 = +a849; + a850 = +a850; + a851 = +a851; + a852 = +a852; + a853 = +a853; + a854 = +a854; + a855 = +a855; + a856 = +a856; + a857 = +a857; + a858 = +a858; + a859 = +a859; + a860 = +a860; + a861 = +a861; + a862 = +a862; + a863 = +a863; + a864 = +a864; + a865 = +a865; + a866 = +a866; + a867 = +a867; + a868 = +a868; + a869 = +a869; + a870 = +a870; + a871 = +a871; + a872 = +a872; + a873 = +a873; + a874 = +a874; + a875 = +a875; + a876 = +a876; + a877 = +a877; + a878 = +a878; + a879 = +a879; + a880 = +a880; + a881 = +a881; + a882 = +a882; + a883 = +a883; + a884 = +a884; + a885 = +a885; + a886 = +a886; + a887 = +a887; + a888 = +a888; + a889 = +a889; + a890 = +a890; + a891 = +a891; + a892 = +a892; + a893 = +a893; + a894 = +a894; + a895 = +a895; + a896 = +a896; + a897 = +a897; + a898 = +a898; + a899 = +a899; + a900 = +a900; + a901 = +a901; + a902 = +a902; + a903 = +a903; + a904 = +a904; + a905 = +a905; + a906 = +a906; + a907 = +a907; + a908 = +a908; + a909 = +a909; + a910 = +a910; + a911 = +a911; + a912 = +a912; + a913 = +a913; + a914 = +a914; + a915 = +a915; + a916 = +a916; + a917 = +a917; + a918 = +a918; + a919 = +a919; + a920 = +a920; + a921 = +a921; + a922 = +a922; + a923 = +a923; + a924 = +a924; + a925 = +a925; + a926 = +a926; + a927 = +a927; + a928 = +a928; + a929 = +a929; + a930 = +a930; + a931 = +a931; + a932 = +a932; + a933 = +a933; + a934 = +a934; + a935 = +a935; + a936 = +a936; + a937 = +a937; + a938 = +a938; + a939 = +a939; + a940 = +a940; + a941 = +a941; + a942 = +a942; + a943 = +a943; + a944 = +a944; + a945 = +a945; + a946 = +a946; + a947 = +a947; + a948 = +a948; + a949 = +a949; + a950 = +a950; + a951 = +a951; + a952 = +a952; + a953 = +a953; + a954 = +a954; + a955 = +a955; + a956 = +a956; + a957 = +a957; + a958 = +a958; + a959 = +a959; + a960 = +a960; + a961 = +a961; + a962 = +a962; + a963 = +a963; + a964 = +a964; + a965 = +a965; + a966 = +a966; + a967 = +a967; + a968 = +a968; + a969 = +a969; + a970 = +a970; + a971 = +a971; + a972 = +a972; + a973 = +a973; + a974 = +a974; + a975 = +a975; + a976 = +a976; + a977 = +a977; + a978 = +a978; + a979 = +a979; + a980 = +a980; + a981 = +a981; + a982 = +a982; + a983 = +a983; + a984 = +a984; + a985 = +a985; + a986 = +a986; + a987 = +a987; + a988 = +a988; + a989 = +a989; + a990 = +a990; + a991 = +a991; + a992 = +a992; + a993 = +a993; + a994 = +a994; + a995 = +a995; + a996 = +a996; + a997 = +a997; + a998 = +a998; + a999 = +a999; + a1000 = +a1000; + a1001 = +a1001; + a1002 = +a1002; + a1003 = +a1003; + a1004 = +a1004; + a1005 = +a1005; + return 10; + } + function bar() { + return foo(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 1.0) | + 0; + } + return bar +})()(); |