mirror of
https://github.com/tc39/test262.git
synced 2025-07-26 23:44:27 +02:00
Merge pull request #2037 from test262-automation/v8-test262-automation-export-ad1b4aadf8
Import test changes from V8
This commit is contained in:
commit
04ae1c1359
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"sourceRevisionAtLastExport": "f88d169e",
|
"sourceRevisionAtLastExport": "f85a3554",
|
||||||
"targetRevisionAtLastExport": "ad1b4aadf8",
|
"targetRevisionAtLastExport": "6bb8f41e0a",
|
||||||
"curatedFiles": {}
|
"curatedFiles": {}
|
||||||
}
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright 2019 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: --harmony-locale
|
||||||
|
//
|
||||||
|
// Test NumberFormat will accept Intl.Locale as first parameter, or
|
||||||
|
// as in the array.
|
||||||
|
|
||||||
|
let tag = "zh-Hant-TW-u-nu-thai"
|
||||||
|
let l = new Intl.Locale(tag);
|
||||||
|
|
||||||
|
var nf;
|
||||||
|
// Test with String
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat(tag));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test with Array with one String
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag]));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test with Array with two String
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat([tag, "en"]));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test with a Locale
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat(l));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test with a Array of one Locale
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat([l]));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test with a Array of one Locale and a Sring
|
||||||
|
assertDoesNotThrow(() => nf = new Intl.NumberFormat([l, "en"]));
|
||||||
|
assertEquals(tag, nf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test DateTimeFormat
|
||||||
|
var df;
|
||||||
|
assertDoesNotThrow(() => df = new Intl.DateTimeFormat(tag));
|
||||||
|
assertEquals(tag, df.resolvedOptions().locale);
|
||||||
|
assertDoesNotThrow(() => df = new Intl.DateTimeFormat([tag]));
|
||||||
|
assertEquals(tag, df.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test RelativeTimeFormat
|
||||||
|
var rtf;
|
||||||
|
assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat(tag));
|
||||||
|
assertEquals(tag, rtf.resolvedOptions().locale);
|
||||||
|
assertDoesNotThrow(() => rtf = new Intl.RelativeTimeFormat([tag]));
|
||||||
|
assertEquals(tag, rtf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test ListFormat
|
||||||
|
tag = "zh-Hant-TW"
|
||||||
|
var lf;
|
||||||
|
assertDoesNotThrow(() => lf = new Intl.ListFormat(tag));
|
||||||
|
assertEquals(tag, lf.resolvedOptions().locale);
|
||||||
|
assertDoesNotThrow(() => lf = new Intl.ListFormat([tag]));
|
||||||
|
assertEquals(tag, lf.resolvedOptions().locale);
|
||||||
|
|
||||||
|
// Test Collator
|
||||||
|
var col;
|
||||||
|
assertDoesNotThrow(() => col = new Intl.Collator(tag));
|
||||||
|
assertEquals(tag, lf.resolvedOptions().locale);
|
||||||
|
assertDoesNotThrow(() => col = new Intl.Collator([tag]));
|
||||||
|
assertEquals(tag, lf.resolvedOptions().locale);
|
@ -27,8 +27,12 @@
|
|||||||
|
|
||||||
[
|
[
|
||||||
[ALWAYS, {
|
[ALWAYS, {
|
||||||
# TODO(jochen): The following test is flaky.
|
# TODO(jochen): The following test is flaky.
|
||||||
'overrides/caching': [PASS, FAIL],
|
'overrides/caching': [PASS, FAIL],
|
||||||
|
|
||||||
|
# https://code.google.com/p/v8/issues/detail?id=7481
|
||||||
|
'collator/check-kf-option': [FAIL],
|
||||||
|
'collator/check-kn-option': [FAIL],
|
||||||
}], # ALWAYS
|
}], # ALWAYS
|
||||||
|
|
||||||
['variant == no_wasm_traps', {
|
['variant == no_wasm_traps', {
|
||||||
|
@ -86,9 +86,7 @@ assertThrows(
|
|||||||
}),
|
}),
|
||||||
Error);
|
Error);
|
||||||
|
|
||||||
// These don't throw yet, we need to implement language/script/region
|
assertThrows(
|
||||||
// override logic first.
|
|
||||||
assertDoesNotThrow(
|
|
||||||
() => new Intl.Locale('en-US', {
|
() => new Intl.Locale('en-US', {
|
||||||
get language() {
|
get language() {
|
||||||
throw new Error('foo');
|
throw new Error('foo');
|
||||||
@ -96,7 +94,7 @@ assertDoesNotThrow(
|
|||||||
}),
|
}),
|
||||||
Error);
|
Error);
|
||||||
|
|
||||||
assertDoesNotThrow(
|
assertThrows(
|
||||||
() => new Intl.Locale('en-US', {
|
() => new Intl.Locale('en-US', {
|
||||||
get script() {
|
get script() {
|
||||||
throw new Error('foo');
|
throw new Error('foo');
|
||||||
@ -104,7 +102,7 @@ assertDoesNotThrow(
|
|||||||
}),
|
}),
|
||||||
Error);
|
Error);
|
||||||
|
|
||||||
assertDoesNotThrow(
|
assertThrows(
|
||||||
() => new Intl.Locale('en-US', {
|
() => new Intl.Locale('en-US', {
|
||||||
get region() {
|
get region() {
|
||||||
throw new Error('foo');
|
throw new Error('foo');
|
||||||
|
22
implementation-contributed/v8/intl/locale/property.js
Normal file
22
implementation-contributed/v8/intl/locale/property.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright 2019 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: --harmony-locale
|
||||||
|
|
||||||
|
// Make sure that accessing locale property will return undefined instead of
|
||||||
|
// crash.
|
||||||
|
|
||||||
|
let locale = new Intl.Locale('sr');
|
||||||
|
|
||||||
|
assertEquals('sr', locale.toString());
|
||||||
|
assertEquals('sr', locale.baseName);
|
||||||
|
assertEquals('sr', locale.language);
|
||||||
|
assertEquals(undefined, locale.script);
|
||||||
|
assertEquals(undefined, locale.region);
|
||||||
|
assertEquals(false, locale.numeric);
|
||||||
|
assertEquals(undefined, locale.calendar);
|
||||||
|
assertEquals(undefined, locale.collation);
|
||||||
|
assertEquals(undefined, locale.hourCycle);
|
||||||
|
assertEquals(undefined, locale.caseFirst);
|
||||||
|
assertEquals(undefined, locale.numberingSystem);
|
7
implementation-contributed/v8/intl/regress-8657.js
Normal file
7
implementation-contributed/v8/intl/regress-8657.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// Copyright 2019 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: --harmony-locale
|
||||||
|
|
||||||
|
assertDoesNotThrow(() => new Intl.Locale('und'));
|
11
implementation-contributed/v8/intl/regress-917151.js
Normal file
11
implementation-contributed/v8/intl/regress-917151.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright 2016 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.
|
||||||
|
|
||||||
|
// Regression test for 917151
|
||||||
|
|
||||||
|
assertThrows(
|
||||||
|
() => Number.prototype.toLocaleString.call(
|
||||||
|
-22,
|
||||||
|
"x-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6"),
|
||||||
|
RangeError)
|
@ -0,0 +1,97 @@
|
|||||||
|
// 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: --harmony-intl-relative-time-format
|
||||||
|
|
||||||
|
// For locale default the numberingSystem to 'latn'
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("ar").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("en").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("fr").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("hi").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("th").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("zh-Hant").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
|
||||||
|
// For locale default the numberingSystem to other than 'latn'
|
||||||
|
assertEquals(
|
||||||
|
"arab",
|
||||||
|
new Intl.RelativeTimeFormat("ar-TD").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"arabext",
|
||||||
|
new Intl.RelativeTimeFormat("fa").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"beng",
|
||||||
|
new Intl.RelativeTimeFormat("bn").resolvedOptions().numberingSystem
|
||||||
|
);
|
||||||
|
|
||||||
|
// For locale use -u-nu- to change to other numberingSystem
|
||||||
|
assertEquals(
|
||||||
|
"thai",
|
||||||
|
new Intl.RelativeTimeFormat("en-u-nu-thai").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"arab",
|
||||||
|
new Intl.RelativeTimeFormat("en-u-nu-arab").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
|
||||||
|
// For locale which default others but use -u-nu-latn to change to 'latn' numberingSystem
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("ar-TD-u-nu-latn").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("fa-u-nu-latn").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("bn-u-nu-latn").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
|
||||||
|
// For locale use -u-nu- with invalid value still back to default.
|
||||||
|
assertEquals(
|
||||||
|
"latn",
|
||||||
|
new Intl.RelativeTimeFormat("en-u-nu-abcd").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"arabext",
|
||||||
|
new Intl.RelativeTimeFormat("fa-u-nu-abcd").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"beng",
|
||||||
|
new Intl.RelativeTimeFormat("bn-u-nu-abcd").resolvedOptions()
|
||||||
|
.numberingSystem
|
||||||
|
);
|
@ -13,10 +13,15 @@ assertEquals('long', rtf.resolvedOptions().style);
|
|||||||
assertEquals('always', rtf.resolvedOptions().numeric);
|
assertEquals('always', rtf.resolvedOptions().numeric);
|
||||||
|
|
||||||
// contains style, numeric and locale key
|
// contains style, numeric and locale key
|
||||||
assertEquals(3, Object.getOwnPropertyNames(rtf.resolvedOptions()).length);
|
assertEquals(4, Object.getOwnPropertyNames(rtf.resolvedOptions()).length);
|
||||||
|
|
||||||
// contains style, numeric and locale key
|
// contains style, numeric and locale key
|
||||||
assertEquals(3, Object.getOwnPropertyNames(new Intl.RelativeTimeFormat('en').resolvedOptions()).length);
|
assertEquals(
|
||||||
|
4,
|
||||||
|
Object.getOwnPropertyNames(
|
||||||
|
new Intl.RelativeTimeFormat("en").resolvedOptions()
|
||||||
|
).length
|
||||||
|
);
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
'short',
|
'short',
|
||||||
|
13
implementation-contributed/v8/mjsunit/asm/regress-920076.js
Normal file
13
implementation-contributed/v8/mjsunit/asm/regress-920076.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Copyright 2019 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 Module() {
|
||||||
|
"use asm";
|
||||||
|
function f() {}
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
eval("(" + Module.toString().replace(/;/, String.fromCharCode(8233)) + ")();");
|
||||||
|
assertFalse(%IsAsmWasmCode(Module)); // Valid asm.js, but we reject Unicode.
|
@ -3,7 +3,7 @@
|
|||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// Flags: --allow-natives-syntax --opt --no-always-opt
|
// Flags: --allow-natives-syntax --opt --no-always-opt
|
||||||
// Flags: --no-stress-background-compile
|
// Flags: --no-stress-background-compile --trace-opt --trace-deopt
|
||||||
|
|
||||||
let id = 0;
|
let id = 0;
|
||||||
|
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2019 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 f(get, ...a) {
|
||||||
|
for (let i = 0; i < 1000; i++) {
|
||||||
|
if (i === 999) %OptimizeOsr();
|
||||||
|
a.map(f);
|
||||||
|
}
|
||||||
|
return get();
|
||||||
|
}
|
||||||
|
assertThrows(f);
|
@ -141,15 +141,15 @@ try {
|
|||||||
}
|
}
|
||||||
assertTrue(caught);
|
assertTrue(caught);
|
||||||
|
|
||||||
caught = false
|
// See ES#sec-web-compat-evaldeclarationinstantiation. Sloppy block functions
|
||||||
try {
|
// inside of blocks in eval behave similar to regular sloppy block function
|
||||||
(function() {
|
// hoisting: the var declaration on the function level is only created if
|
||||||
|
// it would not cause a syntax error. A masking let would cause a conflicting
|
||||||
|
// var declaration syntax error, and hence the var isn't introduced.
|
||||||
|
(function() {
|
||||||
{
|
{
|
||||||
let x = 1;
|
let x = 1;
|
||||||
eval('{ function x() {} }');
|
eval('{ function x() {} }');
|
||||||
|
assertEquals(1, x);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
} catch (e) {
|
|
||||||
caught = true;
|
|
||||||
}
|
|
||||||
assertFalse(caught);
|
|
||||||
|
@ -620,15 +620,12 @@ eval(`
|
|||||||
return 4;
|
return 4;
|
||||||
} }`);
|
} }`);
|
||||||
|
|
||||||
// assertEquals(0, f);
|
assertEquals(0, f);
|
||||||
assertEquals(4, f());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertEquals(4, f());
|
assertEquals(4, f());
|
||||||
assertEquals(undefined, f);
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// This test is incorrect BUG(v8:5168). The commented assertions are correct.
|
|
||||||
(function evalHoistingThroughWith() {
|
(function evalHoistingThroughWith() {
|
||||||
with ({f: 0}) {
|
with ({f: 0}) {
|
||||||
eval(`{ function f() {
|
eval(`{ function f() {
|
||||||
|
@ -574,3 +574,58 @@ assertEquals(oz, [1, 2, 3, 4, 5]);
|
|||||||
assertEquals(1, ext("let x; ({x} = { x: super() })").x);
|
assertEquals(1, ext("let x; ({x} = { x: super() })").x);
|
||||||
assertEquals(1, ext("let x, y; ({ x: y } = { x } = { x: super() })").x);
|
assertEquals(1, ext("let x, y; ({ x: y } = { x } = { x: super() })").x);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
(function testInvalidReturn() {
|
||||||
|
function* g() { yield 1; }
|
||||||
|
|
||||||
|
let executed_x_setter;
|
||||||
|
let executed_return;
|
||||||
|
var a = {
|
||||||
|
set x(val) {
|
||||||
|
executed_x_setter = true;
|
||||||
|
throw 3;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// The exception from the execution of g().return() should be suppressed by
|
||||||
|
// the setter error.
|
||||||
|
executed_x_setter = false;
|
||||||
|
executed_return = false;
|
||||||
|
g.prototype.return = function() {
|
||||||
|
executed_return = true;
|
||||||
|
throw 4;
|
||||||
|
};
|
||||||
|
assertThrowsEquals("[a.x] = g()", 3);
|
||||||
|
assertTrue(executed_x_setter);
|
||||||
|
assertTrue(executed_return);
|
||||||
|
|
||||||
|
// The exception from g().return() not returning an object should be
|
||||||
|
// suppressed by the setter error.
|
||||||
|
executed_x_setter = false;
|
||||||
|
executed_return = false;
|
||||||
|
g.prototype.return = function() {
|
||||||
|
assertTrue(executed_return);
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
assertThrowsEquals("[a.x] = g()", 3);
|
||||||
|
assertTrue(executed_x_setter);
|
||||||
|
assertTrue(executed_return);
|
||||||
|
|
||||||
|
// The TypeError from g().return not being a method should suppress the setter
|
||||||
|
// error.
|
||||||
|
executed_x_setter = false;
|
||||||
|
g.prototype.return = "not a method";
|
||||||
|
assertThrows("[a.x] = g()", TypeError);
|
||||||
|
assertTrue(executed_x_setter);
|
||||||
|
|
||||||
|
// The exception from the access of g().return should suppress the setter
|
||||||
|
// error.
|
||||||
|
executed_x_setter = false;
|
||||||
|
Object.setPrototypeOf(g.prototype, {
|
||||||
|
get return() {
|
||||||
|
throw 4;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
assertThrowsEquals("[a.x] = g()", 4);
|
||||||
|
assertTrue(executed_x_setter);
|
||||||
|
})
|
||||||
|
@ -96,7 +96,10 @@ function TestArrayPrototypeUnscopables() {
|
|||||||
var fill = 'local fill';
|
var fill = 'local fill';
|
||||||
var find = 'local find';
|
var find = 'local find';
|
||||||
var findIndex = 'local findIndex';
|
var findIndex = 'local findIndex';
|
||||||
|
var flat = 'local flat';
|
||||||
|
var flatMap = 'local flatMap';
|
||||||
var keys = 'local keys';
|
var keys = 'local keys';
|
||||||
|
var includes = 'local includes';
|
||||||
var values = 'local values';
|
var values = 'local values';
|
||||||
|
|
||||||
var array = [];
|
var array = [];
|
||||||
@ -108,6 +111,9 @@ function TestArrayPrototypeUnscopables() {
|
|||||||
assertEquals('local fill', fill);
|
assertEquals('local fill', fill);
|
||||||
assertEquals('local find', find);
|
assertEquals('local find', find);
|
||||||
assertEquals('local findIndex', findIndex);
|
assertEquals('local findIndex', findIndex);
|
||||||
|
assertEquals('local flat', flat);
|
||||||
|
assertEquals('local flatMap', flatMap);
|
||||||
|
assertEquals('local includes', includes);
|
||||||
assertEquals('local keys', keys);
|
assertEquals('local keys', keys);
|
||||||
assertEquals('local values', values);
|
assertEquals('local values', values);
|
||||||
assertEquals(42, toString);
|
assertEquals(42, toString);
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
// Flags: --noasync-stack-traces
|
||||||
|
|
||||||
async function test(func, funcs) {
|
async function test(func, funcs) {
|
||||||
try {
|
try {
|
||||||
await func();
|
await func();
|
||||||
@ -81,21 +83,19 @@ async function runTests() {
|
|||||||
try { await reject(); } catch (e) { throw new Error("FAIL"); }
|
try { await reject(); } catch (e) { throw new Error("FAIL"); }
|
||||||
} }).c4, ["c4"]);
|
} }).c4, ["c4"]);
|
||||||
|
|
||||||
// TODO(caitp): We should infer anonymous async functions as the empty
|
|
||||||
// string, not as the name of a function they're passed as a parameter to.
|
|
||||||
await test(async x => { throw new Error("FAIL") },
|
await test(async x => { throw new Error("FAIL") },
|
||||||
["test", "test", "runTests"]);
|
["test", "runTests"]);
|
||||||
await test(async() => { throw new Error("FAIL") },
|
await test(async() => { throw new Error("FAIL") },
|
||||||
["test", "test", "runTests"]);
|
["test", "runTests"]);
|
||||||
await test(async(a) => { throw new Error("FAIL") },
|
await test(async(a) => { throw new Error("FAIL") },
|
||||||
["test", "test", "runTests"]);
|
["test", "runTests"]);
|
||||||
await test(async(a, b) => { throw new Error("FAIL") },
|
await test(async(a, b) => { throw new Error("FAIL") },
|
||||||
["test", "test", "runTests"]);
|
["test", "runTests"]);
|
||||||
|
|
||||||
await test(async x => { await 1; throw new Error("FAIL") }, ["test"]);
|
await test(async x => { await 1; throw new Error("FAIL") }, []);
|
||||||
await test(async() => { await 1; throw new Error("FAIL") }, ["test"]);
|
await test(async() => { await 1; throw new Error("FAIL") }, []);
|
||||||
await test(async(a) => { await 1; throw new Error("FAIL") }, ["test"]);
|
await test(async(a) => { await 1; throw new Error("FAIL") }, []);
|
||||||
await test(async(a, b) => { await 1; throw new Error("FAIL") }, ["test"]);
|
await test(async(a, b) => { await 1; throw new Error("FAIL") }, []);
|
||||||
|
|
||||||
await test(async x => {
|
await test(async x => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -104,7 +104,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async() => {
|
await test(async() => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -113,7 +113,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async(a) => {
|
await test(async(a) => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -122,7 +122,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async(a, b) => {
|
await test(async(a, b) => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -131,7 +131,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async x => {
|
await test(async x => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -140,7 +140,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async() => {
|
await test(async() => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -149,7 +149,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async(a) => {
|
await test(async(a) => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -158,7 +158,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
|
|
||||||
await test(async(a, b) => {
|
await test(async(a, b) => {
|
||||||
await 1;
|
await 1;
|
||||||
@ -167,7 +167,7 @@ async function runTests() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("FAIL");
|
throw new Error("FAIL");
|
||||||
}
|
}
|
||||||
}, ["test"]);
|
}, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
runTests().catch(e => {
|
runTests().catch(e => {
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
// Copyright 2019 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: --harmony-hashbang
|
||||||
|
|
||||||
|
// Hashbang syntax is not allowed in eval.
|
||||||
|
assertThrows("#!", SyntaxError);
|
||||||
|
assertThrows("#!\n", SyntaxError);
|
||||||
|
assertThrows("#!---IGNORED---", SyntaxError);
|
||||||
|
assertThrows("#!---IGNORED---\n", SyntaxError);
|
@ -0,0 +1,356 @@
|
|||||||
|
// 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: --harmony-private-fields --allow-natives-syntax
|
||||||
|
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(undefined, C.a);
|
||||||
|
assertEquals(undefined, C.getA());
|
||||||
|
|
||||||
|
let c = new C;
|
||||||
|
assertEquals(undefined, c.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(undefined, C.a);
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
|
||||||
|
let c = new C;
|
||||||
|
assertEquals(undefined, c.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static #b = this.#a;
|
||||||
|
static getB() { return this.#b; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getB());
|
||||||
|
|
||||||
|
let c = new C;
|
||||||
|
assertEquals(undefined, c.getB);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
constructor() {
|
||||||
|
assertThrows(() => this.#a, TypeError);
|
||||||
|
C.#a = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
|
||||||
|
let c = new C;
|
||||||
|
assertThrows(() => C.prototype.getA.call(c));
|
||||||
|
assertEquals(2, C.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = this;
|
||||||
|
static #b = () => this;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static getB() { return this.#b; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(C, C.getA());
|
||||||
|
assertSame(C, C.getB()());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = this;
|
||||||
|
static #b = function() { return this; };
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static getB() { return this.#b; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSame(C, C.getA());
|
||||||
|
assertSame(C, C.getB().call(C));
|
||||||
|
assertSame(undefined, C.getB()());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = function() { return 1 };
|
||||||
|
static getA() {return this.#a;}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals('#a', C.getA().name);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let d = function() { return new.target; }
|
||||||
|
class C {
|
||||||
|
static #c = d;
|
||||||
|
static getC() { return this.#c; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(undefined, C.getC()());
|
||||||
|
assertSame(new d, new (C.getC()));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static getA(instance) { return instance.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class B { }
|
||||||
|
|
||||||
|
assertEquals(undefined, C.a);
|
||||||
|
assertEquals(1, C.getA(C));
|
||||||
|
assertThrows(() => C.getA(B), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class B extends A {}
|
||||||
|
assertThrows(() => B.getA(), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return A.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class B extends A {}
|
||||||
|
assertSame(1, B.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let prototypeLookup = false;
|
||||||
|
class A {
|
||||||
|
static set a(val) {
|
||||||
|
prototypeLookup = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static get a() { return undefined; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class C extends A {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
assertEquals(false, prototypeLookup);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static a = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
class B extends A {
|
||||||
|
static #b = this.a;
|
||||||
|
static getB() { return this.#b; }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, B.getB());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
|
||||||
|
class B extends A {
|
||||||
|
static getA() { return super.getA(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertThrows(() => B.getA(), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a;}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B extends A {
|
||||||
|
static #a = 2;
|
||||||
|
static get_A() { return this.#a;}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, A.getA());
|
||||||
|
assertThrows(() => B.getA(), TypeError);
|
||||||
|
assertEquals(2, B.get_A());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let foo = undefined;
|
||||||
|
class A {
|
||||||
|
static #a = (function() { foo = 1; })();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, foo);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let foo = undefined;
|
||||||
|
class A extends class {} {
|
||||||
|
static #a = (function() { foo = 1; })();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, foo);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
function makeClass() {
|
||||||
|
return class {
|
||||||
|
static #a;
|
||||||
|
static setA(val) { this.#a = val; }
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let classA = makeClass();
|
||||||
|
let classB = makeClass();
|
||||||
|
|
||||||
|
assertEquals(undefined, classA.getA());
|
||||||
|
assertEquals(undefined, classB.getA());
|
||||||
|
|
||||||
|
classA.setA(3);
|
||||||
|
assertEquals(3, classA.getA());
|
||||||
|
assertEquals(undefined, classB.getA());
|
||||||
|
|
||||||
|
classB.setA(5);
|
||||||
|
assertEquals(3, classA.getA());
|
||||||
|
assertEquals(5, classB.getA());
|
||||||
|
|
||||||
|
assertThrows(() => classA.getA.call(classB), TypeError);
|
||||||
|
assertThrows(() => classB.getA.call(classA), TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let value = undefined;
|
||||||
|
|
||||||
|
new class {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
new class C {
|
||||||
|
static #a = 2;
|
||||||
|
constructor() {
|
||||||
|
value = C.#a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(2, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class A {
|
||||||
|
static #a = 1;
|
||||||
|
static b = class {
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static get_A(val) { return val.#a; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, A.b.getA.call(A));
|
||||||
|
assertEquals(1, A.b.get_A(A));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
assertThrows(() => class { static b = this.#a; static #a = 1 }, TypeError);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let symbol = Symbol();
|
||||||
|
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static [symbol] = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static setA(val) { this.#a = val; }
|
||||||
|
}
|
||||||
|
|
||||||
|
var p = new Proxy(C, {
|
||||||
|
get: function(target, name) {
|
||||||
|
if (typeof(arg) === 'symbol') {
|
||||||
|
assertFalse(%SymbolIsPrivate(name));
|
||||||
|
}
|
||||||
|
return target[name];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThrows(() => p.getA(), TypeError);
|
||||||
|
assertThrows(() => p.setA(1), TypeError);
|
||||||
|
assertEquals(1, p[symbol]);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #b = Object.freeze(this);
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static #a = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return eval('this.#a'); }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var C;
|
||||||
|
eval('C = class { static #a = 1; static getA() { return eval(\'this.#a\'); }}');
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static #a = 1;
|
||||||
|
static getA() { return this.#a; }
|
||||||
|
static setA() { eval('this.#a = 4'); }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(1, C.getA());
|
||||||
|
C.setA();
|
||||||
|
assertEquals(4, C.getA());
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
class C {
|
||||||
|
static getA() { return eval('this.#a'); }
|
||||||
|
}
|
||||||
|
|
||||||
|
assertThrows(() => C.getA(), SyntaxError);
|
||||||
|
}
|
@ -268,6 +268,7 @@
|
|||||||
'regress/regress-trap-allocation-memento': [SKIP],
|
'regress/regress-trap-allocation-memento': [SKIP],
|
||||||
'regress/regress-2249': [SKIP],
|
'regress/regress-2249': [SKIP],
|
||||||
'regress/regress-4121': [SKIP],
|
'regress/regress-4121': [SKIP],
|
||||||
|
'regress/regress-6989': [SKIP],
|
||||||
'compare-known-objects-slow': [SKIP],
|
'compare-known-objects-slow': [SKIP],
|
||||||
'compiler/array-multiple-receiver-maps': [SKIP],
|
'compiler/array-multiple-receiver-maps': [SKIP],
|
||||||
# Tests taking too long
|
# Tests taking too long
|
||||||
@ -322,7 +323,7 @@
|
|||||||
}], # 'gc_stress == True'
|
}], # 'gc_stress == True'
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
['lite_mode == True', {
|
['lite_mode', {
|
||||||
# Skip tests not suitable for lite_mode.
|
# Skip tests not suitable for lite_mode.
|
||||||
|
|
||||||
# TODO(8596): We cache the templates in the feedback vector. In lite mode
|
# TODO(8596): We cache the templates in the feedback vector. In lite mode
|
||||||
@ -348,7 +349,38 @@
|
|||||||
'spread-large-string': [SKIP],
|
'spread-large-string': [SKIP],
|
||||||
'spread-large-array': [SKIP],
|
'spread-large-array': [SKIP],
|
||||||
|
|
||||||
}], # 'lite_mode == True'
|
# TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
|
||||||
|
'regress/wasm/*': [SKIP],
|
||||||
|
'tools/compiler-trace-flags': [SKIP],
|
||||||
|
'wasm/*': [SKIP],
|
||||||
|
|
||||||
|
# Other tests that use asm / wasm / optimized code.
|
||||||
|
'asm/asm-heap': [SKIP],
|
||||||
|
'asm/asm-validation': [SKIP],
|
||||||
|
'asm/call-stdlib': [SKIP],
|
||||||
|
'asm/call-annotation': [SKIP],
|
||||||
|
'asm/global-imports': [SKIP],
|
||||||
|
'asm/regress-913822': [SKIP],
|
||||||
|
'asm/return-types': [SKIP],
|
||||||
|
'regress/regress-599719': [SKIP],
|
||||||
|
'regress/regress-6196': [SKIP],
|
||||||
|
'regress/regress-6700': [SKIP],
|
||||||
|
'regress/regress-6838-2': [SKIP],
|
||||||
|
'regress/regress-6838-3': [SKIP],
|
||||||
|
|
||||||
|
# Timeouts in lite / jitless mode.
|
||||||
|
'asm/embenchen/*': [SKIP],
|
||||||
|
|
||||||
|
# Tests that generate code at runtime.
|
||||||
|
'code-comments': [SKIP],
|
||||||
|
'regress/regress-617526': [SKIP],
|
||||||
|
'regress/regress-7893': [SKIP],
|
||||||
|
'regress/regress-8377': [SKIP],
|
||||||
|
'regress/regress-863810': [SKIP],
|
||||||
|
'regress/regress-crbug-721835': [SKIP],
|
||||||
|
'regress/regress-crbug-759327': [SKIP],
|
||||||
|
'regress/regress-crbug-898974': [SKIP],
|
||||||
|
}], # 'lite_mode'
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
['byteorder == big', {
|
['byteorder == big', {
|
||||||
@ -964,4 +996,11 @@
|
|||||||
# crbug.com/v8/7741
|
# crbug.com/v8/7741
|
||||||
'wasm/bigint': [SKIP],
|
'wasm/bigint': [SKIP],
|
||||||
}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]
|
}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
['arch not in [x64, arm, arm64] or system != linux', {
|
||||||
|
# Unwinding info writer is only supported on x64, arm, and arm64 Linux
|
||||||
|
'regress/regress-913844': [SKIP],
|
||||||
|
}],
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -53,9 +53,9 @@ assertEquals(
|
|||||||
{value: "Module", configurable: false, writable: false, enumerable: false},
|
{value: "Module", configurable: false, writable: false, enumerable: false},
|
||||||
Reflect.getOwnPropertyDescriptor(foo, Symbol.toStringTag));
|
Reflect.getOwnPropertyDescriptor(foo, Symbol.toStringTag));
|
||||||
|
|
||||||
// Nonexistant properties.
|
// Nonexistent properties.
|
||||||
let nonexistant = ["gaga", 123, Symbol('')];
|
let nonexistent = ["gaga", 123, Symbol('')];
|
||||||
for (let key of nonexistant) {
|
for (let key of nonexistent) {
|
||||||
assertSame(undefined, Reflect.getOwnPropertyDescriptor(foo, key));
|
assertSame(undefined, Reflect.getOwnPropertyDescriptor(foo, key));
|
||||||
assertTrue(Reflect.deleteProperty(foo, key));
|
assertTrue(Reflect.deleteProperty(foo, key));
|
||||||
assertFalse(Reflect.set(foo, key, true));
|
assertFalse(Reflect.set(foo, key, true));
|
||||||
|
@ -389,3 +389,7 @@ Object.seal(Sealed);
|
|||||||
assertDoesNotThrow(function() { return new Sealed(); });
|
assertDoesNotThrow(function() { return new Sealed(); });
|
||||||
Sealed.prototype.prototypeExists = true;
|
Sealed.prototype.prototypeExists = true;
|
||||||
assertTrue((new Sealed()).prototypeExists);
|
assertTrue((new Sealed()).prototypeExists);
|
||||||
|
|
||||||
|
obj = new Int32Array(10)
|
||||||
|
Object.seal(obj);
|
||||||
|
assertTrue(Object.isSealed(obj));
|
||||||
|
14
implementation-contributed/v8/mjsunit/regress-918763.js
Normal file
14
implementation-contributed/v8/mjsunit/regress-918763.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2019 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 C() {}
|
||||||
|
C.__proto__ = null;
|
||||||
|
|
||||||
|
function f(c) { return 0 instanceof c; }
|
||||||
|
|
||||||
|
f(C);
|
||||||
|
%OptimizeFunctionOnNextCall(f);
|
||||||
|
assertThrows(() => f(0));
|
@ -1,5 +0,0 @@
|
|||||||
// Copyright 2014 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-natives-as 1
|
|
@ -4,7 +4,10 @@
|
|||||||
|
|
||||||
// Environment Variables: LC_ALL=pt-BR.UTF8
|
// Environment Variables: LC_ALL=pt-BR.UTF8
|
||||||
|
|
||||||
|
// The data files packaged with d8 currently have Brazillian Portuguese
|
||||||
|
// DateTimeFormat but not Collation
|
||||||
|
|
||||||
if (this.Intl) {
|
if (this.Intl) {
|
||||||
assertEquals('pt-BR', Intl.Collator().resolvedOptions().locale);
|
assertEquals('pt', Intl.Collator().resolvedOptions().locale);
|
||||||
assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale);
|
assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2019 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
|
||||||
|
|
||||||
|
// Parameters can't have parentheses (both patterns and identifiers)
|
||||||
|
assertThrows("( ({x: 1}) ) => {};", SyntaxError);
|
||||||
|
assertThrows("( (x) ) => {}", SyntaxError);
|
||||||
|
assertThrows("( ({x: 1}) = y ) => {}", SyntaxError);
|
||||||
|
assertThrows("( (x) = y ) => {}", SyntaxError);
|
||||||
|
|
||||||
|
// Declarations can't have parentheses (both patterns and identifiers)
|
||||||
|
assertThrows("let [({x: 1})] = [];", SyntaxError);
|
||||||
|
assertThrows("let [(x)] = [];", SyntaxError);
|
||||||
|
assertThrows("let [({x: 1}) = y] = [];", SyntaxError);
|
||||||
|
assertThrows("let [(x) = y] = [];", SyntaxError);
|
||||||
|
assertThrows("var [({x: 1})] = [];", SyntaxError);
|
||||||
|
assertThrows("var [(x)] = [];", SyntaxError);
|
||||||
|
assertThrows("var [({x: 1}) = y] = [];", SyntaxError);
|
||||||
|
assertThrows("var [(x) = y] = [];", SyntaxError);
|
||||||
|
|
||||||
|
// Patterns in can't have parentheses in assignments either
|
||||||
|
assertThrows("[({x: 1}) = y] = [];", SyntaxError);
|
||||||
|
|
||||||
|
// Parentheses are fine around identifiers in assignments though, even inside a
|
||||||
|
// pattern
|
||||||
|
var x;
|
||||||
|
[(x)] = [2];
|
||||||
|
assertEquals(x, 2);
|
||||||
|
[(x) = 3] = [];
|
||||||
|
assertEquals(x, 3);
|
@ -0,0 +1,5 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
assertThrows("const [(x)] = []", SyntaxError);
|
@ -20,5 +20,4 @@ assertEquals(o51.length, 39);
|
|||||||
// Sort triggers the bug.
|
// Sort triggers the bug.
|
||||||
o51.sort();
|
o51.sort();
|
||||||
|
|
||||||
// TODO(chromium:897512): The length should be 39.
|
assertEquals(o51.length, 39);
|
||||||
assertEquals(o51.length, 101);
|
|
||||||
|
@ -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: --disable-in-process-stack-traces --perf-prof-unwinding-info --turbo-loop-rotation
|
||||||
|
for (var x = 0; x < 1000000; x++)
|
||||||
|
;
|
@ -0,0 +1,6 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
a: if (true) b: { break a; break b; }
|
||||||
|
else b: { break a; break b; }
|
@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2019 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 a() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let a;
|
||||||
|
function a() {};
|
||||||
|
}
|
@ -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.
|
||||||
|
|
||||||
|
// Tests if class declarations in parameter list are correctly handled.
|
||||||
|
function v_2(
|
||||||
|
v_3 = class v_4 {
|
||||||
|
get [[] = ';']() { }
|
||||||
|
}
|
||||||
|
) { }
|
||||||
|
v_2();
|
||||||
|
|
||||||
|
// Test object inside a class in a parameter list
|
||||||
|
(function f(
|
||||||
|
v_3 = class v_4 {
|
||||||
|
get [{} = ';']() { }
|
||||||
|
}
|
||||||
|
) { })();
|
||||||
|
|
||||||
|
// Test destructuring of class in parameters
|
||||||
|
(function f( {p, q} = class C { get [[] = ';']() {} } ) {})();
|
||||||
|
|
||||||
|
// Test array destructuring of class in parameters
|
||||||
|
class C {};
|
||||||
|
C[Symbol.iterator] = function() {
|
||||||
|
return {
|
||||||
|
next: function() { return { done: true }; },
|
||||||
|
_first: true
|
||||||
|
};
|
||||||
|
};
|
||||||
|
(function f1([p, q] = class D extends C { get [[]]() {} }) { })();
|
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright 2019 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
|
||||||
|
|
||||||
|
var E = 'Σ';
|
||||||
|
var PI = 123;
|
||||||
|
function f() {
|
||||||
|
print(E = 2, /b/.test(E) || /b/.test(E = 2));
|
||||||
|
((E = 3) * PI);
|
||||||
|
}
|
||||||
|
|
||||||
|
f();
|
||||||
|
f();
|
||||||
|
%OptimizeFunctionOnNextCall(f);
|
||||||
|
f();
|
@ -0,0 +1,5 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
assertThrows("( let ) => { 'use strict'; let }", SyntaxError)
|
@ -0,0 +1,5 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
assertThrows("(d * f * g) * e => 0", SyntaxError)
|
@ -26,5 +26,5 @@ try {
|
|||||||
} catch(e) { print("Caught: " + e); }
|
} catch(e) { print("Caught: " + e); }
|
||||||
try {
|
try {
|
||||||
var obj = {prop: 7};
|
var obj = {prop: 7};
|
||||||
assertThrows("nonexistant(obj)");
|
assertThrows("nonexistent(obj)");
|
||||||
} catch(e) { print("Caught: " + e); }
|
} catch(e) { print("Caught: " + e); }
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright 2019 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
|
||||||
|
|
||||||
|
let speciesCounter = 0;
|
||||||
|
|
||||||
|
Object.defineProperty(Promise, Symbol.species, {
|
||||||
|
value: function(...args) {
|
||||||
|
speciesCounter++;
|
||||||
|
return new Promise(...args);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function foo() { }
|
||||||
|
|
||||||
|
assertPromiseResult(Promise.all([foo()]), () => {
|
||||||
|
assertEquals(3, speciesCounter);
|
||||||
|
});
|
@ -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
|
||||||
|
|
||||||
|
const constructors = [
|
||||||
|
[Uint8Array, [0, 1]],
|
||||||
|
[Int8Array, [0, 1]],
|
||||||
|
[Uint16Array, [0, 1]],
|
||||||
|
[Int16Array, [0, 1]],
|
||||||
|
[Uint32Array, [0, 1]],
|
||||||
|
[Int32Array, [0, 1]],
|
||||||
|
[Float32Array, [0, 1]],
|
||||||
|
[Float64Array, [0, 1]],
|
||||||
|
[Uint8ClampedArray, [0, 1]],
|
||||||
|
[BigInt64Array, [0n, 1n]],
|
||||||
|
[BigUint64Array, [0n, 1n]]
|
||||||
|
];
|
||||||
|
|
||||||
|
let typedArray;
|
||||||
|
|
||||||
|
const separator = {
|
||||||
|
toString() {
|
||||||
|
%ArrayBufferDetach(typedArray.buffer);
|
||||||
|
return '*';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
constructors.forEach(([constructor, arr]) => {
|
||||||
|
typedArray = new constructor(arr);
|
||||||
|
assertSame(typedArray.join(separator), '*');
|
||||||
|
});
|
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2019 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 --enable-slow-asserts
|
||||||
|
|
||||||
|
var Ctor = function() {
|
||||||
|
return [];
|
||||||
|
};
|
||||||
|
var a = ["one", "two", "three"];
|
||||||
|
a.constructor = {};
|
||||||
|
a.constructor[Symbol.species] = Ctor;
|
||||||
|
|
||||||
|
a.filter(function() { return true; });
|
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright 2019 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 f() {
|
||||||
|
// Loop with a body that's not wrapped in a block.
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
var x = i, // var x that's assigned on each iteration
|
||||||
|
y = y||(()=>x), // single arrow function that returns x
|
||||||
|
z = (%OptimizeFunctionOnNextCall(y), y()); // optimize y on first iteration
|
||||||
|
return y()
|
||||||
|
};
|
||||||
|
assertEquals(1, f())
|
@ -0,0 +1,6 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
with({}) { eval("{function f(){f}}") };
|
||||||
|
f()
|
@ -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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
builder.addType(makeSig([], []));
|
||||||
|
builder.addType(makeSig([kWasmI32], [kWasmI32]));
|
||||||
|
builder.addFunction(undefined, 0 /* sig */)
|
||||||
|
.addBodyWithEnd([
|
||||||
|
kExprEnd, // @1
|
||||||
|
]);
|
||||||
|
builder.addFunction(undefined, 1 /* sig */)
|
||||||
|
.addLocals({i32_count: 65})
|
||||||
|
.addBodyWithEnd([
|
||||||
|
kExprLoop, kWasmStmt, // @3
|
||||||
|
kSimdPrefix,
|
||||||
|
kExprF32x4Min,
|
||||||
|
kExprI64UConvertI32,
|
||||||
|
kExprI64RemS,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprLoop, 0x02, // @10
|
||||||
|
]);
|
||||||
|
})
|
@ -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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
const sig = builder.addType(makeSig([kWasmI32, kWasmI64], []));
|
||||||
|
builder.addFunction(undefined, sig)
|
||||||
|
.addBody([
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprElse,
|
||||||
|
kExprI32Const, 1,
|
||||||
|
kExprEnd,
|
||||||
|
kExprTeeLocal, 0,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprLoop, kWasmStmt,
|
||||||
|
kExprI64Const, 0x80, 0x80, 0x80, 0x70,
|
||||||
|
kExprSetLocal, 0x01,
|
||||||
|
kExprI32Const, 0x00,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprI32Const, 0x00,
|
||||||
|
kExprElse,
|
||||||
|
kExprI32Const, 0x00,
|
||||||
|
kExprEnd,
|
||||||
|
kExprBrIf, 0x00,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd,
|
||||||
|
kExprUnreachable,
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
const sig = builder.addType(makeSig([], [kWasmF64]));
|
||||||
|
builder.addFunction(undefined, sig)
|
||||||
|
.addLocals({f32_count: 5}).addLocals({f64_count: 3})
|
||||||
|
.addBody([
|
||||||
|
kExprBlock, kWasmF64,
|
||||||
|
kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f,
|
||||||
|
kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprElse,
|
||||||
|
kExprI32Const, 1,
|
||||||
|
kExprEnd,
|
||||||
|
kExprBrIf, 0,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,55 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
const sig0 = builder.addType(makeSig([kWasmF32], [kWasmI32]));
|
||||||
|
const sig1 = builder.addType(makeSig([kWasmI64, kWasmI32, kWasmI64, kWasmF32, kWasmI64], [kWasmF32]));
|
||||||
|
const sig2 = builder.addType(makeSig([kWasmF32], [kWasmF32]));
|
||||||
|
// Generate function 1 (out of 3).
|
||||||
|
builder.addFunction(undefined, sig0).addBody([kExprI32Const, 0x00]);
|
||||||
|
// Generate function 2 (out of 3).
|
||||||
|
builder.addFunction(undefined, sig1)
|
||||||
|
.addBody([
|
||||||
|
// signature: f_lilfl
|
||||||
|
kExprBlock, kWasmF32, // @1 f32
|
||||||
|
kExprI32Const, 0x00,
|
||||||
|
kExprIf, kWasmStmt, // @5
|
||||||
|
kExprLoop, kWasmStmt, // @7
|
||||||
|
kExprBlock, kWasmI32, // @9 i32
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0xc1,
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0x45,
|
||||||
|
kExprCallFunction, 0x00, // function #0: i_f
|
||||||
|
kExprBrIf, 0x03, // depth=3
|
||||||
|
kExprDrop,
|
||||||
|
kExprI32Const, 0xd8, 0x00,
|
||||||
|
kExprEnd, // @29
|
||||||
|
kExprBrIf, 0x00, // depth=0
|
||||||
|
kExprEnd, // @32
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0x3f,
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0xc6,
|
||||||
|
kExprBlock, kWasmI32, // @43 i32
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0x3f,
|
||||||
|
kExprCallFunction, 0x02, // function #2: f_f
|
||||||
|
kExprDrop,
|
||||||
|
kExprI32Const, 0x68,
|
||||||
|
kExprEnd, // @55
|
||||||
|
kExprBrIf, 0x01, // depth=1
|
||||||
|
kExprI32Const, 0x00,
|
||||||
|
kExprSelect,
|
||||||
|
kExprDrop,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprElse, // @63
|
||||||
|
kExprNop,
|
||||||
|
kExprEnd, // @65
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x69, 0x43,
|
||||||
|
kExprEnd // @71
|
||||||
|
]);
|
||||||
|
// Generate function 3 (out of 3).
|
||||||
|
builder.addFunction(undefined, sig2).addBody([
|
||||||
|
kExprF32Const, 0x00, 0x00, 0x80, 0x3f
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
const sig =
|
||||||
|
builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI64]));
|
||||||
|
builder.addFunction('main', sig).addBody([kExprI64Const, 1, kExprI64SExtendI8]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
builder.addFunction(undefined, kSig_i_i)
|
||||||
|
.addLocals({i32_count: 7})
|
||||||
|
.addBody([
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprIf, kWasmI32, // @11 i32
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprElse, // @15
|
||||||
|
kExprI32Const, 1,
|
||||||
|
kExprEnd, // @18
|
||||||
|
kExprTeeLocal, 0,
|
||||||
|
kExprI32Popcnt
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
builder.addFunction(undefined, kSig_v_v)
|
||||||
|
.addLocals({i32_count: 1}).addLocals({f32_count: 1}).addLocals({f64_count: 1})
|
||||||
|
.addBody([
|
||||||
|
kExprGetLocal, 1,
|
||||||
|
kExprGetLocal, 2,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprI32Const, 1,
|
||||||
|
kExprElse,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd,
|
||||||
|
kExprUnreachable
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
builder.addFunction(undefined, kSig_i_i)
|
||||||
|
.addLocals({i32_count: 5})
|
||||||
|
.addBody([
|
||||||
|
kExprGetLocal, 0, // --> 1
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprGetLocal, 0, // --> 1
|
||||||
|
kExprElse,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprGetLocal, 0, // --> 1
|
||||||
|
kExprElse,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd,
|
||||||
|
kExprIf, kWasmI32,
|
||||||
|
kExprI32Const, 0,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprI32Sub, // --> -1
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprI32Sub, // --> 0
|
||||||
|
kExprI32Sub, // --> -1
|
||||||
|
kExprElse,
|
||||||
|
kExprUnreachable,
|
||||||
|
kExprEnd
|
||||||
|
]);
|
||||||
|
builder.addExport('main', 0);
|
||||||
|
const instance = builder.instantiate();
|
||||||
|
assertEquals(-1, instance.exports.main(1));
|
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2019 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.
|
||||||
|
|
||||||
|
load('test/mjsunit/wasm/wasm-constants.js');
|
||||||
|
load('test/mjsunit/wasm/wasm-module-builder.js');
|
||||||
|
|
||||||
|
const builder = new WasmModuleBuilder();
|
||||||
|
builder.addFunction(undefined, kSig_v_v).addBody([]);
|
||||||
|
builder.addFunction(undefined, kSig_i_i)
|
||||||
|
.addBody([
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
// Stack now contains two copies of the first param register.
|
||||||
|
// Start a loop to create a merge point (values still in registers).
|
||||||
|
kExprLoop, kWasmStmt,
|
||||||
|
// The call spills all values.
|
||||||
|
kExprCallFunction, 0,
|
||||||
|
// Break to the loop. Now the spilled values need to be loaded back *into
|
||||||
|
// the same register*.
|
||||||
|
kExprBr, 0,
|
||||||
|
kExprEnd,
|
||||||
|
kExprDrop
|
||||||
|
]);
|
||||||
|
builder.instantiate();
|
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright 2019 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: --experimental-wasm-eh
|
||||||
|
|
||||||
|
load("test/mjsunit/wasm/wasm-constants.js");
|
||||||
|
load("test/mjsunit/wasm/wasm-module-builder.js");
|
||||||
|
|
||||||
|
(function TestTruncatedBrOnExnInLoop() {
|
||||||
|
let builder = new WasmModuleBuilder();
|
||||||
|
let fun = builder.addFunction(undefined, kSig_v_v)
|
||||||
|
.addLocals({except_count: 1})
|
||||||
|
.addBody([
|
||||||
|
kExprLoop, kWasmStmt,
|
||||||
|
kExprGetLocal, 0,
|
||||||
|
kExprBrOnExn // Bytecode truncated here.
|
||||||
|
]).exportFunc();
|
||||||
|
fun.body.pop(); // Pop implicitly added kExprEnd from body.
|
||||||
|
assertThrows(() => builder.instantiate(), WebAssembly.CompileError);
|
||||||
|
})();
|
@ -81,9 +81,6 @@ class TestSuite(testsuite.TestSuite):
|
|||||||
def _test_class(self):
|
def _test_class(self):
|
||||||
return TestCase
|
return TestCase
|
||||||
|
|
||||||
def _suppressed_test_class(self):
|
|
||||||
return SuppressedTestCase
|
|
||||||
|
|
||||||
|
|
||||||
class TestCase(testcase.D8TestCase):
|
class TestCase(testcase.D8TestCase):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -282,27 +279,5 @@ class CombinedTest(testcase.D8TestCase):
|
|||||||
test._get_statusfile_flags() for test in self._tests)
|
test._get_statusfile_flags() for test in self._tests)
|
||||||
|
|
||||||
|
|
||||||
class SuppressedTestCase(TestCase):
|
|
||||||
"""The same as a standard mjsunit test case with all asserts as no-ops."""
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super(SuppressedTestCase, self).__init__(*args, **kwargs)
|
|
||||||
self._mjsunit_files.append(
|
|
||||||
os.path.join(self.suite.root, "mjsunit_suppressions.js"))
|
|
||||||
|
|
||||||
def _prepare_outcomes(self, *args, **kwargs):
|
|
||||||
super(SuppressedTestCase, self)._prepare_outcomes(*args, **kwargs)
|
|
||||||
# Skip tests expected to fail. We suppress all asserts anyways, but some
|
|
||||||
# tests are expected to fail with type errors or even dchecks, and we
|
|
||||||
# can't differentiate that.
|
|
||||||
if statusfile.FAIL in self._statusfile_outcomes:
|
|
||||||
self._statusfile_outcomes = [statusfile.SKIP]
|
|
||||||
|
|
||||||
def _get_extra_flags(self, *args, **kwargs):
|
|
||||||
return (
|
|
||||||
super(SuppressedTestCase, self)._get_extra_flags(*args, **kwargs) +
|
|
||||||
['--disable-abortjs']
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def GetSuite(*args, **kwargs):
|
def GetSuite(*args, **kwargs):
|
||||||
return TestSuite(*args, **kwargs)
|
return TestSuite(*args, **kwargs)
|
||||||
|
@ -142,38 +142,6 @@
|
|||||||
'language/eval-code/direct/var-env-lower-lex-catch-non-strict': [FAIL],
|
'language/eval-code/direct/var-env-lower-lex-catch-non-strict': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=4951
|
# https://bugs.chromium.org/p/v8/issues/detail?id=4951
|
||||||
'language/expressions/assignment/dstr-array-elem-iter-rtrn-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-iter-thrw-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-iter-thrw-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-list-thrw-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-rtrn-close-null': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-thrw-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-elem-trlg-iter-rest-thrw-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-iter-rtrn-close-null': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-iter-thrw-close': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-iter-thrw-close-err': [FAIL],
|
|
||||||
'language/expressions/assignment/dstr-array-rest-lref-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-iter-rtrn-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-iter-thrw-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-iter-thrw-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-list-thrw-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-rtrn-close-null': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-elem-trlg-iter-rest-thrw-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-iter-rtrn-close-null': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-iter-thrw-close': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-iter-thrw-close-err': [FAIL],
|
|
||||||
'language/statements/for-of/dstr-array-rest-lref-err': [FAIL],
|
|
||||||
'language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order': [FAIL],
|
'language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order': [FAIL],
|
||||||
'language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order': [FAIL],
|
'language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order': [FAIL],
|
||||||
|
|
||||||
@ -420,19 +388,6 @@
|
|||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5116
|
# https://bugs.chromium.org/p/v8/issues/detail?id=5116
|
||||||
'built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan': [PASS, FAIL],
|
'built-ins/TypedArray/prototype/fill/fill-values-conversion-operations-consistent-nan': [PASS, FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5135
|
|
||||||
'annexB/language/eval-code/direct/func-block-decl-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-switch-case-eval-func-block-scoping': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-switch-dflt-eval-func-block-scoping': [FAIL],
|
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5139
|
|
||||||
'annexB/built-ins/Date/prototype/setYear/year-number-relative': [FAIL],
|
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=4698
|
# https://bugs.chromium.org/p/v8/issues/detail?id=4698
|
||||||
'language/expressions/call/tco-call-args': [SKIP],
|
'language/expressions/call/tco-call-args': [SKIP],
|
||||||
'language/expressions/call/tco-cross-realm-class-construct': [SKIP],
|
'language/expressions/call/tco-cross-realm-class-construct': [SKIP],
|
||||||
@ -479,16 +434,6 @@
|
|||||||
'built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds': [FAIL],
|
'built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds': [FAIL],
|
||||||
'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds': [FAIL],
|
'built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=5112
|
|
||||||
'annexB/language/eval-code/direct/func-block-decl-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-a-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-decl-b-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-else-stmt-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-decl-no-else-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-if-stmt-else-decl-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-switch-case-eval-func-no-skip-try': [FAIL],
|
|
||||||
'annexB/language/eval-code/direct/func-switch-dflt-eval-func-no-skip-try': [FAIL],
|
|
||||||
|
|
||||||
# SharedArrayBuffer tests that require flags
|
# SharedArrayBuffer tests that require flags
|
||||||
'built-ins/SharedArrayBuffer/*': ['--harmony-sharedarraybuffer'],
|
'built-ins/SharedArrayBuffer/*': ['--harmony-sharedarraybuffer'],
|
||||||
'built-ins/Atomics/*': ['--harmony-sharedarraybuffer'],
|
'built-ins/Atomics/*': ['--harmony-sharedarraybuffer'],
|
||||||
@ -561,13 +506,15 @@
|
|||||||
'language/expressions/call/eval-spread-empty-leading': [FAIL],
|
'language/expressions/call/eval-spread-empty-leading': [FAIL],
|
||||||
'language/expressions/call/eval-spread-empty-trailing': [FAIL],
|
'language/expressions/call/eval-spread-empty-trailing': [FAIL],
|
||||||
|
|
||||||
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8398
|
||||||
|
'intl402/supportedLocalesOf-returned-array-elements-are-frozen': [FAIL],
|
||||||
|
'intl402/ListFormat/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||||
|
'intl402/RelativeTimeFormat/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||||
|
'intl402/Segmenter/constructor/supportedLocalesOf/result-type': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7472
|
# https://bugs.chromium.org/p/v8/issues/detail?id=7472
|
||||||
'intl402/NumberFormat/currency-digits': [FAIL],
|
'intl402/NumberFormat/currency-digits': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7474
|
|
||||||
'intl402/NumberFormat/prototype/format/format-fraction-digits': [FAIL],
|
|
||||||
'intl402/NumberFormat/prototype/format/format-significant-digits': [FAIL],
|
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7482
|
# https://bugs.chromium.org/p/v8/issues/detail?id=7482
|
||||||
'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL],
|
'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL],
|
||||||
|
|
||||||
@ -577,9 +524,6 @@
|
|||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=7669
|
# https://bugs.chromium.org/p/v8/issues/detail?id=7669
|
||||||
'intl402/Intl/getCanonicalLocales/canonicalized-tags': [FAIL],
|
'intl402/Intl/getCanonicalLocales/canonicalized-tags': [FAIL],
|
||||||
|
|
||||||
# https://github.com/tc39/ecma402/issues/223
|
|
||||||
'intl402/Collator/missing-unicode-ext-value-defaults-to-true': [FAIL],
|
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8260
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8260
|
||||||
'intl402/Locale/constructor-non-iana-canon': [FAIL],
|
'intl402/Locale/constructor-non-iana-canon': [FAIL],
|
||||||
|
|
||||||
@ -592,17 +536,6 @@
|
|||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8246
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8246
|
||||||
'intl402/Locale/constructor-tag': [FAIL],
|
'intl402/Locale/constructor-tag': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8244
|
|
||||||
'intl402/Locale/constructor-getter-order': [FAIL],
|
|
||||||
'intl402/Locale/constructor-locale-object': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-language-grandfathered': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-language-invalid': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-region-invalid': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-region-valid': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-script-invalid': [FAIL],
|
|
||||||
'intl402/Locale/constructor-options-script-valid': [FAIL],
|
|
||||||
'intl402/Locale/getters': [FAIL],
|
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8243
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8243
|
||||||
'intl402/Locale/extensions-private': [FAIL],
|
'intl402/Locale/extensions-private': [FAIL],
|
||||||
'intl402/Locale/getters-privateuse': [FAIL],
|
'intl402/Locale/getters-privateuse': [FAIL],
|
||||||
@ -615,6 +548,9 @@
|
|||||||
'intl402/Locale/getters-grandfathered': [FAIL],
|
'intl402/Locale/getters-grandfathered': [FAIL],
|
||||||
'intl402/Locale/likely-subtags-grandfathered': [FAIL],
|
'intl402/Locale/likely-subtags-grandfathered': [FAIL],
|
||||||
|
|
||||||
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8613
|
||||||
|
'intl402/RelativeTimeFormat/prototype/resolvedOptions/order': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=6705
|
# https://bugs.chromium.org/p/v8/issues/detail?id=6705
|
||||||
'built-ins/Object/assign/strings-and-symbol-order': [FAIL],
|
'built-ins/Object/assign/strings-and-symbol-order': [FAIL],
|
||||||
|
|
||||||
@ -624,9 +560,6 @@
|
|||||||
'language/expressions/async-generator/generator-created-after-decl-inst': [FAIL],
|
'language/expressions/async-generator/generator-created-after-decl-inst': [FAIL],
|
||||||
'language/statements/async-generator/generator-created-after-decl-inst': [FAIL],
|
'language/statements/async-generator/generator-created-after-decl-inst': [FAIL],
|
||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8099
|
|
||||||
'intl402/NumberFormat/prototype/format/format-negative-numbers': [FAIL],
|
|
||||||
|
|
||||||
# await tests that require flags
|
# await tests that require flags
|
||||||
'language/expressions/await/async-generator-interleaved': ['--harmony-await-optimization'],
|
'language/expressions/await/async-generator-interleaved': ['--harmony-await-optimization'],
|
||||||
'language/expressions/await/await-monkey-patched-promise': ['--harmony-await-optimization'],
|
'language/expressions/await/await-monkey-patched-promise': ['--harmony-await-optimization'],
|
||||||
@ -646,7 +579,6 @@
|
|||||||
|
|
||||||
# https://bugs.chromium.org/p/v8/issues/detail?id=8258
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8258
|
||||||
'intl402/Locale/constructor-options-language-valid-undefined': [FAIL],
|
'intl402/Locale/constructor-options-language-valid-undefined': [FAIL],
|
||||||
'intl402/Locale/constructor-options-throwing-getters': [FAIL],
|
|
||||||
'intl402/NumberFormat/prototype/format/format-fraction-digits-precision': [FAIL],
|
'intl402/NumberFormat/prototype/format/format-fraction-digits-precision': [FAIL],
|
||||||
'intl402/NumberFormat/prototype/format/format-significant-digits-precision': [FAIL],
|
'intl402/NumberFormat/prototype/format/format-significant-digits-precision': [FAIL],
|
||||||
|
|
||||||
|
@ -9,8 +9,11 @@
|
|||||||
'table/grow': [FAIL],
|
'table/grow': [FAIL],
|
||||||
'table/get-set': [FAIL],
|
'table/get-set': [FAIL],
|
||||||
'module/customSections': [FAIL],
|
'module/customSections': [FAIL],
|
||||||
'global/constructor': [FAIL],
|
}], # ALWAYS
|
||||||
'global/value-get-set': [FAIL],
|
|
||||||
|
[ALWAYS, {
|
||||||
|
# https://bugs.chromium.org/p/v8/issues/detail?id=8633
|
||||||
|
'limits': [SKIP],
|
||||||
}], # ALWAYS
|
}], # ALWAYS
|
||||||
|
|
||||||
['arch == s390 or arch == s390x or system == aix', {
|
['arch == s390 or arch == s390x or system == aix', {
|
||||||
@ -18,4 +21,10 @@
|
|||||||
'instance/constructor': [SKIP],
|
'instance/constructor': [SKIP],
|
||||||
}], # 'arch == s390 or arch == s390x or system == aix'
|
}], # 'arch == s390 or arch == s390x or system == aix'
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
['lite_mode', {
|
||||||
|
# TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
|
||||||
|
'*': [SKIP],
|
||||||
|
}], # lite_mode
|
||||||
|
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user