diff --git a/implementation-contributed/curation_logs/v8.json b/implementation-contributed/curation_logs/v8.json index 7191a0c0008ad2dd292264969f9dfe5453df64ad..1d0c9c5922d23f0c1de8dd1374887dbbd6842e72 100644 --- a/implementation-contributed/curation_logs/v8.json +++ b/implementation-contributed/curation_logs/v8.json @@ -1,5 +1,5 @@ { - "sourceRevisionAtLastExport": "44b1b245", - "targetRevisionAtLastExport": "ae464533ad", + "sourceRevisionAtLastExport": "dde25872", + "targetRevisionAtLastExport": "468a67ade5", "curatedFiles": {} } \ No newline at end of file diff --git a/implementation-contributed/v8/intl/collator/check-co-option.js b/implementation-contributed/v8/intl/collator/check-co-option.js new file mode 100644 index 0000000000000000000000000000000000000000..477d00a0453052ff003992ade4be0afc7a74febf --- /dev/null +++ b/implementation-contributed/v8/intl/collator/check-co-option.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. + +let invalid_co = [ + "invalid", + "search", + "standard", + "abce", +]; + +let valid_locales = [ + "zh-u-co-zhuyin", + "zh-u-co-stroke", + "ar-u-co-compat", + "en-u-co-emoji", + "en-u-co-eor", + "zh-Hant-u-co-pinyin", + "ko-u-co-searchjl", + "ja-u-co-unihan", +]; + +invalid_co.forEach(function(co) { + let col = new Intl.Collator(["en-u-co-" + co]); + assertEquals("en", col.resolvedOptions().locale); +} +); + +valid_locales.forEach(function(l) { + let col = new Intl.Collator([l + "-fo-obar"]); + assertEquals(l, col.resolvedOptions().locale); +} +); diff --git a/implementation-contributed/v8/intl/collator/check-kf-option.js b/implementation-contributed/v8/intl/collator/check-kf-option.js new file mode 100644 index 0000000000000000000000000000000000000000..45085c667e62df0b87a63b22fc7b76eb73d23311 --- /dev/null +++ b/implementation-contributed/v8/intl/collator/check-kf-option.js @@ -0,0 +1,36 @@ +// 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 invalid_kf = [ + "invalid", + "abce", + "none", + "true", +]; + +let valid_kf= [ + "false", + "upper", + "lower", +]; + +let locales = [ + "en", + "fr", +]; + +invalid_kf.forEach(function(kf) { + let col = new Intl.Collator(["en-u-kf-" + kf + "-fo-obar"]); + assertEquals("en", col.resolvedOptions().locale); +} +); + +valid_kf.forEach(function(kf) { + locales.forEach(function(base) { + let l = base + "-u-kf-" + kf; + let col = new Intl.Collator([l + "-fo-obar"]); + assertEquals(l, col.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/intl/collator/check-kn-option.js b/implementation-contributed/v8/intl/collator/check-kn-option.js new file mode 100644 index 0000000000000000000000000000000000000000..0e3a82fe2668308572376a2922d55b649edc86cb --- /dev/null +++ b/implementation-contributed/v8/intl/collator/check-kn-option.js @@ -0,0 +1,29 @@ +// 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 invalid_kn = [ + "invalid", + "search", + "standard", + "abce", +]; + +let valid_kn = [ + ["en-u-kn", true, "en-u-kn"], + ["en-u-kn-true", true, "en-u-kn"], + ["en-u-kn-false",false, "en-u-kn-false"], +]; + +invalid_kn.forEach(function(kn) { + let col = new Intl.Collator(["en-u-kn-" + kn]); + assertEquals("en", col.resolvedOptions().locale); +} +); + +valid_kn.forEach(function(l) { + let col = new Intl.Collator([l[0] + "-fo-obar"]); + assertEquals(l[1], col.resolvedOptions().numeric); + assertEquals(l[2], col.resolvedOptions().locale); +} +); diff --git a/implementation-contributed/v8/intl/date-format/check-ca-option.js b/implementation-contributed/v8/intl/date-format/check-ca-option.js new file mode 100644 index 0000000000000000000000000000000000000000..d27ae44b4867e3277763327a7377ecaecc5c77a2 --- /dev/null +++ b/implementation-contributed/v8/intl/date-format/check-ca-option.js @@ -0,0 +1,51 @@ +// 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 invalid_ca = [ + "invalid", + "abce", +]; + +// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml +let valid_ca= [ + "buddhist", + "chinese", + "coptic", + "dangi", + "ethioaa", + "ethiopic", + "gregory", + "hebrew", + "indian", + "islamic", + "islamic-umalqura", + "islamic-tbla", + "islamic-civil", + "islamic-rgsa", + "iso8601", + "japanese", + "persian", + "roc", +]; + +let locales = [ + "en", + "ar", +]; + +invalid_ca.forEach(function(ca) { + let df = new Intl.DateTimeFormat(["en-u-ca-" + ca + "-fo-obar"]); + assertEquals("en", df.resolvedOptions().locale); +} +); + +valid_ca.forEach(function(ca) { + locales.forEach(function(base) { + let l = base + "-u-ca-" + ca; + let df = new Intl.DateTimeFormat([l + "-fo-obar"]); + assertEquals(l, df.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/intl/date-format/check-hc-option.js b/implementation-contributed/v8/intl/date-format/check-hc-option.js new file mode 100644 index 0000000000000000000000000000000000000000..276bfe6a23d8d5366af34b1251e265a5d41c578a --- /dev/null +++ b/implementation-contributed/v8/intl/date-format/check-hc-option.js @@ -0,0 +1,41 @@ +// 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 invalid_hc = [ + "invalid", + "abce", + "h10", + "h13", + "h22", + "h25", +]; + +// https://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml +let valid_hc= [ + "h11", + "h12", + "h23", + "h24", +]; + +let locales = [ + "en", + "ar", +]; + +invalid_hc.forEach(function(hc) { + let df = new Intl.DateTimeFormat(["en-u-hc-" + hc + "-fo-obar"]); + assertEquals("en", df.resolvedOptions().locale); +} +); + +valid_hc.forEach(function(hc) { + locales.forEach(function(base) { + let l = base + "-u-hc-" + hc; + let df = new Intl.DateTimeFormat([l + "-fo-obar"]); + assertEquals(l, df.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/intl/date-format/check-nu-option.js b/implementation-contributed/v8/intl/date-format/check-nu-option.js new file mode 100644 index 0000000000000000000000000000000000000000..7d4b4dc92716d00b3d67c5276db2871df76437f8 --- /dev/null +++ b/implementation-contributed/v8/intl/date-format/check-nu-option.js @@ -0,0 +1,59 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +let invalid_nu = [ + "invalid", + "abce", + "finance", + "native", + "traditio", +]; + +// https://tc39.github.io/ecma402/#table-numbering-system-digits +let valid_nu= [ + "arab", + "arabext", + "bali", + "beng", + "deva", + "fullwide", + "gujr", + "guru", + "hanidec", + "khmr", + "knda", + "laoo", + "latn", + "limb", + "mlym", + "mong", + "mymr", + "orya", + "tamldec", + "telu", + "thai", + "tibt", +]; + +let locales = [ + "en", + "ar", +]; + + +invalid_nu.forEach(function(nu) { + let df = new Intl.DateTimeFormat(["en-u-nu-" + nu + "-fo-obar"]); + assertEquals("en", df.resolvedOptions().locale); +} +); + +valid_nu.forEach(function(nu) { + locales.forEach(function(base) { + let l = base + "-u-nu-" + nu; + let df = new Intl.DateTimeFormat([l + "-fo-obar"]); + assertEquals(l, df.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/intl/intl.status b/implementation-contributed/v8/intl/intl.status index 3841b287dcbb1f4df47eb275f0a1d93e0f594663..471b1184c58555be60d984438beab715f69810c0 100644 --- a/implementation-contributed/v8/intl/intl.status +++ b/implementation-contributed/v8/intl/intl.status @@ -29,9 +29,6 @@ [ALWAYS, { # TODO(jochen): The following test is flaky. 'overrides/caching': [PASS, FAIL], - - # https://crbug.com/v8/8469 - 'regress-8469': [FAIL], }], # ALWAYS ['variant == no_wasm_traps', { diff --git a/implementation-contributed/v8/intl/number-format/check-nu-option.js b/implementation-contributed/v8/intl/number-format/check-nu-option.js new file mode 100644 index 0000000000000000000000000000000000000000..39c4cbb8cf9f6011b889d9514c18c281ab79d15c --- /dev/null +++ b/implementation-contributed/v8/intl/number-format/check-nu-option.js @@ -0,0 +1,59 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +let invalid_nu = [ + "invalid", + "abce", + "finance", + "native", + "traditio", +]; + +// https://tc39.github.io/ecma402/#table-numbering-system-digits +let valid_nu= [ + "arab", + "arabext", + "bali", + "beng", + "deva", + "fullwide", + "gujr", + "guru", + "hanidec", + "khmr", + "knda", + "laoo", + "latn", + "limb", + "mlym", + "mong", + "mymr", + "orya", + "tamldec", + "telu", + "thai", + "tibt", +]; + +let locales = [ + "en", + "ar", +]; + + +invalid_nu.forEach(function(nu) { + let nf = new Intl.NumberFormat(["en-u-nu-" + nu + "-fo-obar"]); + assertEquals("en", nf.resolvedOptions().locale); +} +); + +valid_nu.forEach(function(nu) { + locales.forEach(function(base) { + let l = base + "-u-nu-" + nu; + let nf = new Intl.NumberFormat([l + "-fo-obar"]); + assertEquals(l, nf.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/intl/regress-7481.js b/implementation-contributed/v8/intl/regress-7481.js new file mode 100644 index 0000000000000000000000000000000000000000..c3441e35cb1a581d26183a72f3c88aa99ca46a83 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-7481.js @@ -0,0 +1,39 @@ +// 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. +assertEquals( + "en-u-hc-h11-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h11-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-hc-h12-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h12-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-hc-h23-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h23-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-hc-h24-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h24-nu-arab"]).resolvedOptions().locale +); + +// https://tc39.github.io/ecma402/#sec-intl.datetimeformat-internal-slots +// invalid hc should be removed +// [[LocaleData]][locale].hc must be « null, "h11", "h12", "h23", "h24" » for all locale values. +assertEquals( + "en-u-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h10-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h13-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h22-nu-arab"]).resolvedOptions().locale +); +assertEquals( + "en-u-nu-arab", + new Intl.DateTimeFormat(["en-u-hc-h25-nu-arab"]).resolvedOptions().locale +); diff --git a/implementation-contributed/v8/intl/segmenter/check-lb-option.js b/implementation-contributed/v8/intl/segmenter/check-lb-option.js new file mode 100644 index 0000000000000000000000000000000000000000..b56b76fc95b33dfc36b62f82dbace14791daa2ea --- /dev/null +++ b/implementation-contributed/v8/intl/segmenter/check-lb-option.js @@ -0,0 +1,41 @@ +// 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-segmenter + +let invalid_lb = [ + "invalid", + "abce", + "breakall", + "keepall", + "none", + "standard", +]; + +let valid_lb= [ + "strict", + "normal", + "loose", +]; + +let locales = [ + "en", + "ja", + "zh", +]; + +invalid_lb.forEach(function(lb) { + let df = new Intl.Segmenter(["en-u-lb-" + lb + "-fo-obar"]); + assertEquals("en", df.resolvedOptions().locale); +} +); + +valid_lb.forEach(function(lb) { + locales.forEach(function(base) { + let l = base + "-u-lb-" + lb; + let df = new Intl.Segmenter([l + "-fo-obar"]); + assertEquals(l, df.resolvedOptions().locale); + }); +} +); diff --git a/implementation-contributed/v8/mjsunit/array-indexing-receiver.js b/implementation-contributed/v8/mjsunit/array-indexing-receiver.js index ea8d02b21809ff3f6f4a9849a96179b29f1f48ae..4c47a39216e8eb065e82933978933c399225c613 100644 --- a/implementation-contributed/v8/mjsunit/array-indexing-receiver.js +++ b/implementation-contributed/v8/mjsunit/array-indexing-receiver.js @@ -356,7 +356,7 @@ var kTests = { Detached_Int8Array() { var array = new Int8Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -391,7 +391,7 @@ var kTests = { Detached_Uint8Array() { var array = new Uint8Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -421,7 +421,7 @@ var kTests = { Detached_Uint8ClampedArray() { var array = new Uint8ClampedArray(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -453,7 +453,7 @@ var kTests = { Detached_Int16Array() { var array = new Int16Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -485,7 +485,7 @@ var kTests = { Detached_Uint16Array() { var array = new Uint16Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -517,7 +517,7 @@ var kTests = { Detached_Int32Array() { var array = new Int32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -550,7 +550,7 @@ var kTests = { Detached_Uint32Array() { var array = new Uint32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -583,7 +583,7 @@ var kTests = { Detached_Float32Array() { var array = new Float32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, @@ -616,7 +616,7 @@ var kTests = { Detached_Float64Array() { var array = new Float32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertEquals(Array.prototype.indexOf.call(array, 0), -1); assertEquals(Array.prototype.indexOf.call(array, 0, 10), -1); }, diff --git a/implementation-contributed/v8/mjsunit/asm/regress-913822.js b/implementation-contributed/v8/mjsunit/asm/regress-913822.js new file mode 100644 index 0000000000000000000000000000000000000000..d6ee74637a959435c5ef1932608eda140638a0bf --- /dev/null +++ b/implementation-contributed/v8/mjsunit/asm/regress-913822.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: --allow-natives-syntax + +(function TestNewlineInCPPComment() { + function Module() { + "use asm" // Crash by comment! + function f() {} + return f + } + Module(); + assertTrue(%IsAsmWasmCode(Module)); +})(); + +(function TestNewlineInCComment() { + function Module() { + "use asm" /* Crash by + comment! */ function f() {} + return f + } + Module(); + assertTrue(%IsAsmWasmCode(Module)); +})(); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js b/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js index 75f513c09952b1a358d19fe42246a7bbfcf7b9c1..184c7d52b7c6bf1e0c9f204b2a49c3aeaba1b59c 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-ad-hoc.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. -// Flags: --allow-natives-syntax --no-always-opt +// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode // Files: test/mjsunit/code-coverage-utils.js // Test code coverage without explicitly activating it upfront. diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js b/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js index ef68e0394d1e23604114ed93a4965fb35a871b39..9865e6ee27b633a12e7e34ad0f6d64a739d35f27 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-block-noopt.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. -// Flags: --allow-natives-syntax --no-always-opt +// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode // Flags: --no-opt // Files: test/mjsunit/code-coverage-utils.js diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js b/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js index 3031e8913a63e53ce21cd38689b8faa6b123f3ae..bd721d52f177a18e882886e9a3318588682fc64e 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-block-opt.js @@ -3,6 +3,7 @@ // found in the LICENSE file. // Flags: --allow-natives-syntax --no-always-opt --opt +// Flags: --no-stress-flush-bytecode // Files: test/mjsunit/code-coverage-utils.js if (isNeverOptimizeLiteMode()) { diff --git a/implementation-contributed/v8/mjsunit/code-coverage-block.js b/implementation-contributed/v8/mjsunit/code-coverage-block.js index bdba90cd1e3009ba26b67a581d45aa7d85667386..c3d775aa27ea814577320b0efd0f8f63fc186082 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-block.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-block.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. -// Flags: --allow-natives-syntax --no-always-opt +// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode // Files: test/mjsunit/code-coverage-utils.js %DebugToggleBlockCoverage(true); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js b/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js index a91c25824fed32e3d4ca29b048cc23309b9073e1..8db45d142b8e7d0492bbf59af9cc71fdac1dc469 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-class-fields.js @@ -2,7 +2,8 @@ // 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 --harmony-public-fields --harmony-static-fields +// Flags: --allow-natives-syntax --no-always-opt --harmony-public-fields +// Flags: --harmony-static-fields --no-stress-flush-bytecode // Files: test/mjsunit/code-coverage-utils.js %DebugToggleBlockCoverage(true); diff --git a/implementation-contributed/v8/mjsunit/code-coverage-precise.js b/implementation-contributed/v8/mjsunit/code-coverage-precise.js index c5569cf01098382c86051fe13e47d4ec8eb2c3e8..2593ed64a09f3fd4d33bf6c80d1a398d01402db8 100644 --- a/implementation-contributed/v8/mjsunit/code-coverage-precise.js +++ b/implementation-contributed/v8/mjsunit/code-coverage-precise.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. -// Flags: --allow-natives-syntax --no-always-opt +// Flags: --allow-natives-syntax --no-always-opt --no-stress-flush-bytecode // Flags: --no-stress-incremental-marking // Files: test/mjsunit/code-coverage-utils.js diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-get.js b/implementation-contributed/v8/mjsunit/compiler/dataview-get.js index 78c6bdf4ac9c17d845eb8bd377f981bc58467293..09094399df69ee2b1dca916f81691cb5e8ecf812 100644 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-get.js +++ b/implementation-contributed/v8/mjsunit/compiler/dataview-get.js @@ -173,14 +173,14 @@ assertUnoptimized(readFloat64); assertUnoptimized(readUint8); })(); -// TurboFan neutered buffer deopts. +// TurboFan detached buffer deopts. (function() { function readInt8Handled(offset) { try { return dataview.getInt8(offset); } catch (e) { return e; } } warmup(readInt8Handled); assertOptimized(readInt8Handled); - %ArrayBufferNeuter(buffer); + %ArrayBufferDetach(buffer); assertInstanceof(readInt8Handled(0), TypeError); assertUnoptimized(readInt8Handled); })(); diff --git a/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js b/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js index 54b35f73c8ad81e3a1344666712ef6ba6c863b14..ef485c69db892f2eb2db9693647d4811d3390780 100644 --- a/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js +++ b/implementation-contributed/v8/mjsunit/compiler/dataview-neutered.js @@ -2,10 +2,10 @@ // 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 --noalways-opt +// Flags: --allow-natives-syntax --opt --noalways-opt --no-stress-flush-bytecode -// Invalidate the neutering protector. -%ArrayBufferNeuter(new ArrayBuffer(1)); +// Invalidate the detaching protector. +%ArrayBufferDetach(new ArrayBuffer(1)); // Check DataView.prototype.getInt8() optimization. (function() { @@ -21,7 +21,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -43,7 +43,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -65,7 +65,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -87,7 +87,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -109,7 +109,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -131,7 +131,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -153,7 +153,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -175,7 +175,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(0, foo(dv)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -199,7 +199,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -223,7 +223,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -247,7 +247,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -271,7 +271,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -295,7 +295,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -319,7 +319,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -343,7 +343,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); @@ -367,7 +367,7 @@ %OptimizeFunctionOnNextCall(foo); assertEquals(undefined, foo(dv, 3)); assertOptimized(foo); - %ArrayBufferNeuter(ab); + %ArrayBufferDetach(ab); assertThrows(() => foo(dv, 4), TypeError); assertUnoptimized(foo); %OptimizeFunctionOnNextCall(foo); diff --git a/implementation-contributed/v8/mjsunit/compiler/regress-913232.js b/implementation-contributed/v8/mjsunit/compiler/regress-913232.js new file mode 100644 index 0000000000000000000000000000000000000000..efd7fb8e5fe713b46b1c9590a3d4e347b41830be --- /dev/null +++ b/implementation-contributed/v8/mjsunit/compiler/regress-913232.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* E(b) { + while (true) { + for (yield* 0; b; yield* 0) {} + } +} + +%OptimizeFunctionOnNextCall(E); +E(); diff --git a/implementation-contributed/v8/mjsunit/es6/array-iterator-detached.js b/implementation-contributed/v8/mjsunit/es6/array-iterator-detached.js index e9a940191b300a0dc02b27df020f76a8a26f0527..2a92ee4ff9da2a6d2112615825b692750dcfcebf 100644 --- a/implementation-contributed/v8/mjsunit/es6/array-iterator-detached.js +++ b/implementation-contributed/v8/mjsunit/es6/array-iterator-detached.js @@ -11,13 +11,13 @@ function Baseline() { assertEquals(0, it.next().value); assertEquals(1, it.next().value); assertEquals(2, it.next().value); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); it.next(); }; %NeverOptimizeFunction(Baseline); assertThrows(Baseline, TypeError, - "Cannot perform Array Iterator.prototype.next on a detached ArrayBuffer"); + "Cannot perform Array Iterator.prototype.next on a neutered ArrayBuffer"); function Turbo(count = 10000) { let array = Array(10000); @@ -32,7 +32,7 @@ function Turbo(count = 10000) { for (let i = 0; i < count; ++i) { let result = it.next(); if (result.value === 255) { - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); } sum += result.value; } @@ -44,4 +44,4 @@ Turbo(10); %OptimizeFunctionOnNextCall(Turbo); assertThrows(Turbo, TypeError, - "Cannot perform Array Iterator.prototype.next on a detached ArrayBuffer"); + "Cannot perform Array Iterator.prototype.next on a neutered ArrayBuffer"); diff --git a/implementation-contributed/v8/mjsunit/es6/array-iterator-turbo.js b/implementation-contributed/v8/mjsunit/es6/array-iterator-turbo.js index 489a53dbc73298168c867210fc625d1a43d460c7..7dcdbe10fa2258b72a9f4319bacf0adf78d696e9 100644 --- a/implementation-contributed/v8/mjsunit/es6/array-iterator-turbo.js +++ b/implementation-contributed/v8/mjsunit/es6/array-iterator-turbo.js @@ -217,7 +217,7 @@ let tests = { // Throw when detached let clone = new array.constructor(array); - %ArrayBufferNeuter(clone.buffer); + %ArrayBufferDetach(clone.buffer); assertThrows(() => sum(clone), TypeError); // Clear the slate for the next iteration. diff --git a/implementation-contributed/v8/mjsunit/es6/classes.js b/implementation-contributed/v8/mjsunit/es6/classes.js index fa85faf44ef8b07205b26c8fb3152d2df990b5b4..27121ec007165439f72550432bf3594f015beac8 100644 --- a/implementation-contributed/v8/mjsunit/es6/classes.js +++ b/implementation-contributed/v8/mjsunit/es6/classes.js @@ -23,10 +23,41 @@ assertEquals('D2', D2.name); var E = class {} - assertEquals('E', E.name); // Should be 'E'. + assertEquals('E', E.name); var F = class { constructor() {} }; - assertEquals('F', F.name); // Should be 'F'. + assertEquals('F', F.name); + + var literal = { E: class {} }; + assertEquals('E', literal.E.name); + + literal = { E: class F {} }; + assertEquals('F', literal.E.name); + + literal = { __proto__: class {} }; + assertEquals('', literal.__proto__.name); + assertEquals( + undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name')); + + literal = { __proto__: class F {} }; + assertEquals('F', literal.__proto__.name); + assertNotEquals( + undefined, Object.getOwnPropertyDescriptor(literal.__proto__, 'name')); + + class G {}; + literal = { __proto__: G }; + assertEquals('G', literal.__proto__.name); + + var H = class { static name() { return 'A'; } }; + literal = { __proto__ : H }; + assertEquals('A', literal.__proto__.name()); + + literal = { + __proto__: class { + static name() { return 'A'; } + } + }; + assertEquals('A', literal.__proto__.name()); })(); diff --git a/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js b/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js index 94e143fa775ae02811237be62e1eb7b539ef2604..5f361f3a78295955be1dd09981a4ba4f54a8b71c 100644 --- a/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js +++ b/implementation-contributed/v8/mjsunit/es6/regress/regress-5929-1.js @@ -8,7 +8,7 @@ var buf = new ArrayBuffer(0x10000); var arr = new Uint8Array(buf).fill(55); var tmp = {}; tmp[Symbol.toPrimitive] = function () { - %ArrayBufferNeuter(arr.buffer); + %ArrayBufferDetach(arr.buffer); return 50; } arr.copyWithin(tmp); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js index 0a55fccf5c8bd63035e5f424276a6a4d8e84611b..e6be924d8e7aa77511a4db75947b9d696b87025f 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-construct-by-array-like.js @@ -194,7 +194,7 @@ tests.push(function TestFromTypedArraySpecies(constr) { assertEquals(1, constructor_read); }); -tests.push(function TestFromTypedArraySpeciesNeutersBuffer(constr) { +tests.push(function TestFromTypedArraySpeciesDetachsBuffer(constr) { var b = new ArrayBuffer(16); var a1 = new constr(b); @@ -203,7 +203,7 @@ tests.push(function TestFromTypedArraySpeciesNeutersBuffer(constr) { Object.defineProperty(b, 'constructor', { get: function() { - %ArrayBufferNeuter(b); + %ArrayBufferDetach(b); return cons; } }); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js b/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js index c52a38625b03b707f95249874273e158068417d0..e60c88f6e71d7d62874f9eef4738e3df999b281f 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-copywithin.js @@ -232,13 +232,13 @@ CheckEachTypedArray(function parametersNotCalledIfDetached(constructor) { var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.copyWithin(tmp, tmp, tmp), TypeError); assertEquals(0, array.length, "array.[[ViewedArrayBuffer]] is detached"); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-every.js b/implementation-contributed/v8/mjsunit/es6/typedarray-every.js index 968078988feabf5234f104988e1b4c1d82f0bba6..feb7cc90cc9c4f8c29bb0eb33e292ed401d97735 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-every.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-every.js @@ -15,7 +15,7 @@ var typedArrayConstructors = [ Float32Array, Float64Array]; -function CheckTypedArrayIsNeutered(array) { +function CheckTypedArrayIsDetached(array) { assertEquals(0, array.byteLength); assertEquals(0, array.byteOffset); assertEquals(0, array.length); @@ -81,21 +81,21 @@ function TestTypedArrayForEach(constructor) { CheckWrapping(3.14, Number); CheckWrapping({}, Object); - // Neutering the buffer backing the typed array mid-way should + // Detaching the buffer backing the typed array mid-way should // still make .forEach() finish, and the array should keep being - // empty after neutering it. + // empty after detaching it. count = 0; a = new constructor(3); result = a.every(function (n, index, array) { - assertFalse(array[index] === undefined); // don't get here if neutered - if (count > 0) %ArrayBufferNeuter(array.buffer); + assertFalse(array[index] === undefined); // don't get here if detached + if (count > 0) %ArrayBufferDetach(array.buffer); array[index] = n + 1; count++; return count > 1 ? array[index] === undefined : true; }); assertEquals(2, count); assertEquals(true, result); - CheckTypedArrayIsNeutered(a); + CheckTypedArrayIsDetached(a); assertEquals(undefined, a[0]); // Calling array.buffer midway can change the backing store. @@ -161,7 +161,7 @@ function TestTypedArrayForEach(constructor) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.every(() => true), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js b/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js index 9ed220373bedda1255b935fb513abed9e325bc82..791b214734a16d3b3f29da0d33f8c90d54995c52 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-fill.js @@ -74,12 +74,12 @@ for (var constructor of typedArrayConstructors) { var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.fill(tmp), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js b/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js index 0f25c362ec92fa2c788b3be81f3cd9561cbec2ae..077016a26c03f2baeb0559c040d41284c79c1c34 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-filter.js @@ -21,7 +21,7 @@ function TestTypedArrayFilter(constructor) { // Throw type error if source array is detached while executing a callback let ta1 = new constructor(10); assertThrows(() => - ta1.filter(() => %ArrayBufferNeuter(ta1.buffer)) + ta1.filter(() => %ArrayBufferDetach(ta1.buffer)) , TypeError); // A new typed array should be created after finishing callbacks diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-find.js b/implementation-contributed/v8/mjsunit/es6/typedarray-find.js index 6f646e5c80eab65ca335ab06c03a24ca0b3fa295..f33e4c5cb95c12293b73c0b96ea146d0fc1859ff 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-find.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-find.js @@ -190,13 +190,13 @@ assertEquals(x, 4); var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); -%ArrayBufferNeuter(array.buffer); +%ArrayBufferDetach(array.buffer); assertThrows(() => array.find(tmp), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js b/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js index 7447395e771741cd51219291970dc7e6e665fc40..e31e17401a2e70d3918d9258ff927560e125dd05 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-findindex.js @@ -190,11 +190,11 @@ assertEquals(x, 4); var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.findIndex(tmp), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js b/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js index 252706a9b58310fcc642606f9098e208055ec142..81c212046a4d33aa3368b693fb93466df1cae370 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-foreach.js @@ -15,7 +15,7 @@ var typedArrayConstructors = [ Float32Array, Float64Array]; -function CheckTypedArrayIsNeutered(array) { +function CheckTypedArrayIsDetached(array) { assertEquals(0, array.byteLength); assertEquals(0, array.byteOffset); assertEquals(0, array.length); @@ -84,7 +84,7 @@ function TestTypedArrayForEach(constructor) { assertEquals(43, a[0]); assertEquals(42, a[1]); - // Neutering the buffer backing the typed array mid-way should + // Detaching the buffer backing the typed array mid-way should // still make .forEach() finish, but exiting early due to the missing // elements, and the array should keep being empty after detaching it. // TODO(dehrenberg): According to the ES6 spec, accessing or testing @@ -94,12 +94,12 @@ function TestTypedArrayForEach(constructor) { a = new constructor(3); count = 0; a.forEach(function (n, index, array) { - if (count > 0) %ArrayBufferNeuter(array.buffer); + if (count > 0) %ArrayBufferDetach(array.buffer); array[index] = n + 1; count++; }); assertEquals(2, count); - CheckTypedArrayIsNeutered(a); + CheckTypedArrayIsDetached(a); assertEquals(undefined, a[0]); // The method must work for typed arrays created from ArrayBuffer. @@ -150,7 +150,7 @@ function TestTypedArrayForEach(constructor) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.forEach(() => true), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js index b34f06e91ff516777ef13f32b084675b20332906..6850571bc481194f0e9e8e7c47b62b8399aa2a93 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-from-detached-typedarray.js @@ -18,6 +18,6 @@ var typedArrayConstructors = [ for (constructor of typedArrayConstructors) { var ta = new constructor(10); - %ArrayBufferNeuter(ta.buffer); + %ArrayBufferDetach(ta.buffer); assertThrows(() => constructor.from(ta), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-from.js b/implementation-contributed/v8/mjsunit/es6/typedarray-from.js index 81576582498448e04103a8c191b627cf7864645a..4bc17ca2600367d7a173da36d1d0ffc72cfe93c9 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-from.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-from.js @@ -208,7 +208,7 @@ for (var constructor of typedArrayConstructors) { let ta2 = new constructor(3).fill(1); Object.defineProperty(ta2, "length", {get: function() { - %ArrayBufferNeuter(ta2.buffer); + %ArrayBufferDetach(ta2.buffer); return 6; }}); assertArrayLikeEquals(constructor.from(ta2), [d, d, d, d, d, d], constructor); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js b/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js index d12a1570c2215153f42cb6340530b4fe3e1eb969..cb88068d76cc93f43360ccb779c97ae81ab1e1e4 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-indexing.js @@ -19,7 +19,7 @@ var typedArrayConstructors = [ var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; @@ -65,7 +65,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.indexOf(tmp), TypeError); // ---------------------------------------------------------------------- @@ -107,6 +107,6 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.lastIndexOf(tmp), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js b/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js index b423ed0f045fe873028371659d787b8053a1bfdc..30b09ab08a0dfc3b5780efee22cf69dec9fd4e89 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-iteration.js @@ -82,7 +82,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.filter(() => false), TypeError); })(); @@ -140,7 +140,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.map((v) => v), TypeError); })(); @@ -204,7 +204,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.some((v) => false), TypeError); })(); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-map.js b/implementation-contributed/v8/mjsunit/es6/typedarray-map.js index 54b535fd30c553a96151953a6eabb7b74b659f39..e8d97879b61ed73cd991b0a8943fdb7a9588a130 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-map.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-map.js @@ -37,7 +37,7 @@ function TestTypedArrayMap(constructor) { new DetachingArray(5).map(function(v,i,a){ print(i); if (i == 1) { - %ArrayBufferNeuter(target.buffer); + %ArrayBufferDetach(target.buffer); } }) }, TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js b/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js index f272f4f0847590fc0840c110ca696f2168c35e28..55a76cdc4d1b9161c3429556e730fc5c9c298dc0 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-neutered.js @@ -4,8 +4,8 @@ // Flags: --allow-natives-syntax -// Disable the neutering protector. -%ArrayBufferNeuter(new ArrayBuffer(1024)); +// Disable the detaching protector. +%ArrayBufferDetach(new ArrayBuffer(1024)); // ArrayBuffer diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js b/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js index ba5d7f7a20dcdd52ce7afb6df1d64faa81ca5e92..2746c57dffd02208c33cbc1b01a56e1e597ad408 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-reduce.js @@ -254,13 +254,13 @@ for (var constructor of typedArrayConstructors) { var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.reduce(sum, tmp), TypeError); assertThrows(() => array.reduceRight(sum, tmp), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js b/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js index bfeb227c5c4128050d702a7434d0d044076e150f..d7133718c3586e39c78e8f557203efa18f394f22 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-reverse.js @@ -57,7 +57,7 @@ for (var constructor of arrayConstructors) { // Detached Operation if (constructor != ArrayMaker) { var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.reverse(), TypeError); } } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js b/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js index 2f40fe54253e8fdd05abfd7660520c41690e8e5a..bd89f86e740803142b3f6fa99ff5079c9eca7bdf 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-slice.js @@ -73,12 +73,12 @@ for (var constructor of typedArrayConstructors) { var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 0; } }; var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.slice(tmp, tmp), TypeError); // Check that the species array must be a typed array diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js b/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js index e2618ade6b0797520438c5e99046fdae3107722d..c5c4ff079a292f4647e5db5610b2725b769ff224 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-sort.js @@ -65,7 +65,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.sort(), TypeError); } diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js b/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js index a1fa9c7665c46a393e6db7eabb3ac301e0b143a4..16c6319b7af5a0f012838ed5400075d830f7d624 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray-tostring.js @@ -101,7 +101,7 @@ for (var constructor of typedArrayConstructors) { // Detached Operation var array = new constructor([1, 2, 3]); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertThrows(() => array.join(), TypeError); assertThrows(() => array.toLocalString(), TypeError); assertThrows(() => array.toString(), TypeError); diff --git a/implementation-contributed/v8/mjsunit/es6/typedarray.js b/implementation-contributed/v8/mjsunit/es6/typedarray.js index 61653dce882529c1a45eedfc2c75bc8013c30150..aab12341accf68abfc40d0c10cc1a543b0d0ac37 100644 --- a/implementation-contributed/v8/mjsunit/es6/typedarray.js +++ b/implementation-contributed/v8/mjsunit/es6/typedarray.js @@ -636,7 +636,7 @@ function TestTypedArraySet() { var detached = false; evilarr[1] = { [Symbol.toPrimitive]() { - %ArrayBufferNeuter(a111.buffer); + %ArrayBufferDetach(a111.buffer); detached = true; return 1; } @@ -648,7 +648,7 @@ function TestTypedArraySet() { var tmp = { [Symbol.toPrimitive]() { assertUnreachable("Parameter should not be processed when " + - "array.[[ViewedArrayBuffer]] is neutered."); + "array.[[ViewedArrayBuffer]] is detached."); return 1; } }; @@ -662,7 +662,7 @@ function TestTypedArraySet() { let detached = false; const offset = { [Symbol.toPrimitive]() { - %ArrayBufferNeuter(xs.buffer); + %ArrayBufferDetach(xs.buffer); detached = true; return 0; } @@ -677,7 +677,7 @@ function TestTypedArraySet() { for (const klass of typedArrayConstructors) { const a = new klass(2); for (let i = 0; i < a.length; i++) a[i] = i; - %ArrayBufferNeuter(a.buffer); + %ArrayBufferDetach(a.buffer); const b = new klass(2); assertThrows(() => b.set(a), TypeError); diff --git a/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js b/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js index edeae88631b8521cac91fbe01a32fe2c3d6e607f..91916aad54e4596bd9f0d836afcd2337b63a7019 100644 --- a/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js +++ b/implementation-contributed/v8/mjsunit/es7/array-includes-receiver.js @@ -356,7 +356,7 @@ var kTests = { Detached_Int8Array() { var array = new Int8Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -391,7 +391,7 @@ var kTests = { Detached_Uint8Array() { var array = new Uint8Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -421,7 +421,7 @@ var kTests = { Detached_Uint8ClampedArray() { var array = new Uint8ClampedArray(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -453,7 +453,7 @@ var kTests = { Detached_Int16Array() { var array = new Int16Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -485,7 +485,7 @@ var kTests = { Detached_Uint16Array() { var array = new Uint16Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -517,7 +517,7 @@ var kTests = { Detached_Int32Array() { var array = new Int32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -550,7 +550,7 @@ var kTests = { Detached_Uint32Array() { var array = new Uint32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -583,7 +583,7 @@ var kTests = { Detached_Float32Array() { var array = new Float32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, @@ -616,7 +616,7 @@ var kTests = { Detached_Float64Array() { var array = new Float32Array(10); - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); assertFalse(Array.prototype.includes.call(array, 0)); assertFalse(Array.prototype.includes.call(array, 0, 10)); }, diff --git a/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js b/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.js new file mode 100644 index 0000000000000000000000000000000000000000..78b1992b14e6ae59fd10adf36063a436e855a20e --- /dev/null +++ b/implementation-contributed/v8/mjsunit/harmony/regress/regress-912504.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: --always-opt --harmony-object-from-entries --allow-natives-syntax + +function test() { + Object.fromEntries([[]]); + %DeoptimizeNow(); +} +test(); diff --git a/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js b/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.js new file mode 100644 index 0000000000000000000000000000000000000000..5d2985f31803586e7df3eaa13299e23070db0203 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/harmony/string-matchAll-deleted-matchAll.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: --harmony-string-matchall + +delete RegExp.prototype[Symbol.matchAll]; +const str = 'a'; +assertThrows(() => str.matchAll(/\w/g), TypeError); diff --git a/implementation-contributed/v8/mjsunit/harmony/weakrefs/factory-scheduled-for-cleanup-multiple-times.js b/implementation-contributed/v8/mjsunit/harmony/weakrefs/factory-scheduled-for-cleanup-multiple-times.js index 49ccdf330da4513478bde0e7a260e3b45a09c8ea..2f3915478ef0062b5e460468afaec44f3e516792 100644 --- a/implementation-contributed/v8/mjsunit/harmony/weakrefs/factory-scheduled-for-cleanup-multiple-times.js +++ b/implementation-contributed/v8/mjsunit/harmony/weakrefs/factory-scheduled-for-cleanup-multiple-times.js @@ -3,6 +3,7 @@ // found in the LICENSE file. // Flags: --harmony-weak-refs --expose-gc --noincremental-marking +// Flags: --no-stress-flush-bytecode let cleanup0_call_count = 0; let cleanup0_weak_cell_count = 0; diff --git a/implementation-contributed/v8/mjsunit/messages.js b/implementation-contributed/v8/mjsunit/messages.js index b80e5abf232fd5339c0e3366044adabad7863d67..d5c796228c958fa60cc8a92daad60117a32a11d9 100644 --- a/implementation-contributed/v8/mjsunit/messages.js +++ b/implementation-contributed/v8/mjsunit/messages.js @@ -171,15 +171,15 @@ test(function() { for (constructor of typedArrayConstructors) { test(() => { const ta = new constructor([1]); - %ArrayBufferNeuter(ta.buffer); + %ArrayBufferDetach(ta.buffer); ta.find(() => {}); - }, "Cannot perform %TypedArray%.prototype.find on a detached ArrayBuffer", TypeError); + }, "Cannot perform %TypedArray%.prototype.find on a neutered ArrayBuffer", TypeError); test(() => { const ta = new constructor([1]); - %ArrayBufferNeuter(ta.buffer); + %ArrayBufferDetach(ta.buffer); ta.findIndex(() => {}); - }, "Cannot perform %TypedArray%.prototype.findIndex on a detached ArrayBuffer", TypeError); + }, "Cannot perform %TypedArray%.prototype.findIndex on a neutered ArrayBuffer", TypeError); } // kFirstArgumentNotRegExp diff --git a/implementation-contributed/v8/mjsunit/mjsunit.status b/implementation-contributed/v8/mjsunit/mjsunit.status index 76b22d8467c8f3efa70ca93540698ca7a4f25243..439237f382519920c4518f6719e9391a2f87a05b 100644 --- a/implementation-contributed/v8/mjsunit/mjsunit.status +++ b/implementation-contributed/v8/mjsunit/mjsunit.status @@ -107,12 +107,12 @@ ############################################################################## # Skip long running tests that time out in debug mode. - 'generated-transition-stub': [PASS, ['mode == debug or dcheck_always_on', SKIP]], + 'generated-transition-stub': [PASS, ['mode == debug', SKIP]], 'migrations': [SKIP], - 'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug or dcheck_always_on', SKIP]], - 'compiler/regress-808472': [PASS, ['mode == debug or dcheck_always_on', SKIP]], + 'array-functions-prototype-misc': [PASS, SLOW, ['mode == debug', SKIP]], + 'compiler/regress-808472': [PASS, ['mode == debug', SKIP]], 'es6/promise-all-overflow-1': [SKIP], - 'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or dcheck_always_on or arch != x64', SKIP]], + 'es6/promise-all-overflow-2': [PASS, SLOW, ['mode == debug or arch != x64', SKIP]], ############################################################################## # This test sets the umask on a per-process basis and hence cannot be @@ -140,7 +140,7 @@ ############################################################################## # Tests verifying CHECK and ASSERT. 'verify-check-false': [FAIL, NO_VARIANTS], - 'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug or dcheck_always_on == True', FAIL]], + 'verify-assert-false': [NO_VARIANTS, ['mode == release and dcheck_always_on == False', PASS], ['mode == debug', FAIL]], ############################################################################## # Tests with different versions for release and debug. @@ -214,10 +214,10 @@ # TODO(vogelheim): big-object-literal exceeds the stack in debug builds, # which makes the test useless. - 'big-object-literal': [PASS, ['mode == debug or dcheck_always_on', SKIP]], + 'big-object-literal': [PASS, ['mode == debug', SKIP]], # Runs out of stack space in debug builds. - 'big-array-literal': [PASS, ['mode == debug or dcheck_always_on', SKIP]], + 'big-array-literal': [PASS, ['mode == debug', SKIP]], # BUG(v8:6306). 'wasm/huge-memory': [SKIP], @@ -929,4 +929,10 @@ 'wasm/asm-wasm-f64': [SKIP], }], # arch == x64 +############################################################################## +['arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips]', { + # TODO(ssauleau): implement BigInt<>Wasm conversion for other arch - + # crbug.com/v8/7741 + 'wasm/bigint': [SKIP], +}], # arch in [arm, android_arm, android_ia32, ia32, ppc, s390, s390x, mipsel, mips] ] diff --git a/implementation-contributed/v8/mjsunit/neuter-twice.js b/implementation-contributed/v8/mjsunit/neuter-twice.js index 3501cee4330f966c1eeaf6f5b7ebdc6418f2bcec..1bf0fa9405650bee1742b87bd8e26898bc074cec 100644 --- a/implementation-contributed/v8/mjsunit/neuter-twice.js +++ b/implementation-contributed/v8/mjsunit/neuter-twice.js @@ -5,5 +5,5 @@ // Flags: --allow-natives-syntax var ab = new ArrayBuffer(100); -%ArrayBufferNeuter(ab); -%ArrayBufferNeuter(ab); +%ArrayBufferDetach(ab); +%ArrayBufferDetach(ab); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-353004.js b/implementation-contributed/v8/mjsunit/regress/regress-353004.js index fe19354d8b8463adb6be746d7126e756a2a72158..f5430c6df4b1575253553a10d156f4ae5811f8e4 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-353004.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-353004.js @@ -8,7 +8,7 @@ var buffer1 = new ArrayBuffer(100 * 1024); assertThrows(function() { var array1 = new Uint8Array(buffer1, {valueOf : function() { - %ArrayBufferNeuter(buffer1); + %ArrayBufferDetach(buffer1); return 0; }}); }, TypeError); @@ -17,7 +17,7 @@ var buffer2 = new ArrayBuffer(100 * 1024); assertThrows(function() { var array2 = new Uint8Array(buffer2, 0, {valueOf : function() { - %ArrayBufferNeuter(buffer2); + %ArrayBufferDetach(buffer2); return 100 * 1024; }}); }, TypeError); @@ -30,7 +30,7 @@ assertThrows(() => return 0; }}, {valueOf : function() { convertedLength = true; - %ArrayBufferNeuter(buffer1); + %ArrayBufferDetach(buffer1); return 0; }}), TypeError); assertTrue(convertedOffset); @@ -38,7 +38,7 @@ assertTrue(convertedLength); var buffer3 = new ArrayBuffer(100 * 1024 * 1024); var dataView1 = new DataView(buffer3, {valueOf : function() { - %ArrayBufferNeuter(buffer3); + %ArrayBufferDetach(buffer3); return 0; }}); @@ -47,7 +47,7 @@ assertEquals(0, dataView1.byteLength); var buffer4 = new ArrayBuffer(100 * 1024); assertThrows(function() { var dataView2 = new DataView(buffer4, 0, {valueOf : function() { - %ArrayBufferNeuter(buffer4); + %ArrayBufferDetach(buffer4); return 100 * 1024 * 1024; }}); }, RangeError); @@ -56,7 +56,7 @@ assertThrows(function() { var buffer5 = new ArrayBuffer(100 * 1024); assertThrows(function() { buffer5.slice({valueOf : function() { - %ArrayBufferNeuter(buffer5); + %ArrayBufferDetach(buffer5); return 0; }}, 100 * 1024 * 1024); }, TypeError); @@ -65,7 +65,7 @@ assertThrows(function() { var buffer7 = new ArrayBuffer(100 * 1024 * 1024); assertThrows(function() { buffer7.slice(0, {valueOf : function() { - %ArrayBufferNeuter(buffer7); + %ArrayBufferDetach(buffer7); return 100 * 1024 * 1024; }}); }, TypeError); @@ -74,7 +74,7 @@ var buffer9 = new ArrayBuffer(1024); var array9 = new Uint8Array(buffer9); assertThrows(() => array9.subarray({valueOf : function() { - %ArrayBufferNeuter(buffer9); + %ArrayBufferDetach(buffer9); return 0; }}, 1024), TypeError); assertEquals(0, array9.length); @@ -83,7 +83,7 @@ var buffer11 = new ArrayBuffer(1024); var array11 = new Uint8Array(buffer11); assertThrows(() => array11.subarray(0, {valueOf : function() { - %ArrayBufferNeuter(buffer11); + %ArrayBufferDetach(buffer11); return 1024; }}), TypeError); assertEquals(0, array11.length); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-4964.js b/implementation-contributed/v8/mjsunit/regress/regress-4964.js index d834708667d35f0c3e9c5a9de014f60742492d50..ad259dca5409dc45977d55995755ccc4ff11f699 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-4964.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-4964.js @@ -4,19 +4,19 @@ // Flags: --allow-natives-syntax -// Neutered source +// Detached source var ab = new ArrayBuffer(10); -ab.constructor = { get [Symbol.species]() { %ArrayBufferNeuter(ab); return ArrayBuffer; } }; +ab.constructor = { get [Symbol.species]() { %ArrayBufferDetach(ab); return ArrayBuffer; } }; assertThrows(() => ab.slice(0), TypeError); -// Neutered target -class NeuteredArrayBuffer extends ArrayBuffer { +// Detached target +class DetachedArrayBuffer extends ArrayBuffer { constructor(...args) { super(...args); - %ArrayBufferNeuter(this); + %ArrayBufferDetach(this); } } var ab2 = new ArrayBuffer(10); -ab2.constructor = NeuteredArrayBuffer; +ab2.constructor = DetachedArrayBuffer; assertThrows(() => ab2.slice(0), TypeError); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-6288.js b/implementation-contributed/v8/mjsunit/regress/regress-6288.js index 5f550c31c8b72d021fcc1148a5c738c0e0d0dd4b..96499d9378f85c5f92e22fbd814a7f9083626e88 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-6288.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-6288.js @@ -4,10 +4,7 @@ // Environment Variables: LC_ALL=pt-BR.UTF8 -// The data files packaged with d8 currently have Brazillian Portuguese -// DateTimeFormat but not Collation - if (this.Intl) { - assertEquals('pt', Intl.Collator().resolvedOptions().locale); + assertEquals('pt-BR', Intl.Collator().resolvedOptions().locale); assertEquals('pt-BR', Intl.DateTimeFormat().resolvedOptions().locale); } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-707410.js b/implementation-contributed/v8/mjsunit/regress/regress-707410.js index a6a0aa52bbf06c7229cbfaa7b76fdfe89781aa02..cc3f58cdb5fd05726f472ab1744c2cfe250d535a 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-707410.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-707410.js @@ -5,5 +5,5 @@ // Flags: --allow-natives-syntax var a = new Uint8Array(1024*1024); -%ArrayBufferNeuter(a.buffer); +%ArrayBufferDetach(a.buffer); assertThrows(() => new Uint8Array(a)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-7773.js b/implementation-contributed/v8/mjsunit/regress/regress-7773.js new file mode 100644 index 0000000000000000000000000000000000000000..7930ae91063f392ee12a9445b270c2c6359b84bb --- /dev/null +++ b/implementation-contributed/v8/mjsunit/regress/regress-7773.js @@ -0,0 +1,71 @@ +// 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 testFunctionNames() { + let descriptor = { + value: '', + writable: false, + enumerable: false, + configurable: true + }; + // Functions have a "name" property by default. + assertEquals( + descriptor, Object.getOwnPropertyDescriptor(function(){}, 'name')); + let a = { fn: function(){} }; + assertSame('fn', a.fn.name); + descriptor.value = 'fn'; + assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name')); + + let b = { __proto__: function(){} }; + assertSame('', b.__proto__.name); + descriptor.value = ''; + assertEquals( + descriptor, Object.getOwnPropertyDescriptor(b.__proto__, 'name')); + + let c = { fn: function F(){} }; + assertSame('F', c.fn.name); + descriptor.value = 'F'; + assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name')); + + let d = { __proto__: function E(){} }; + assertSame('E', d.__proto__.name); + descriptor.value = 'E'; + assertEquals( + descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name')); +})(); + +(function testClassNames() { + let descriptor = { + value: '', + writable: false, + enumerable: false, + configurable: true + }; + + // Anonymous classes do not have a "name" property by default. + assertSame(undefined, Object.getOwnPropertyDescriptor(class {}, 'name')); + descriptor.value = 'C'; + assertEquals(descriptor, Object.getOwnPropertyDescriptor(class C {}, 'name')); + + let a = { fn: class {} }; + assertSame('fn', a.fn.name); + descriptor.value = 'fn'; + assertEquals(descriptor, Object.getOwnPropertyDescriptor(a.fn, 'name')); + + let b = { __proto__: class {} }; + assertSame('', b.__proto__.name); + assertSame( + undefined, Object.getOwnPropertyDescriptor(b.__proto__, 'name')); + + let c = { fn: class F {} }; + assertSame('F', c.fn.name); + descriptor.value = 'F'; + assertEquals(descriptor, Object.getOwnPropertyDescriptor(c.fn, 'name')); + + let d = { __proto__: class F {} }; + assertSame('F', d.__proto__.name); + descriptor.value = 'F'; + assertEquals( + descriptor, Object.getOwnPropertyDescriptor(d.__proto__, 'name')); +})(); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-840106.js b/implementation-contributed/v8/mjsunit/regress/regress-840106.js index b49464dce5223ad035b76dd3f656e435958c032e..568ab7547927a587db6f892e806b40d77e7b8eb9 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-840106.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-840106.js @@ -8,7 +8,7 @@ var buffer = new ArrayBuffer(1024 * 1024); buffer.constructor = { [Symbol.species]: new Proxy(function() {}, { get: _ => { - %ArrayBufferNeuter(buffer); + %ArrayBufferDetach(buffer); } }) }; diff --git a/implementation-contributed/v8/mjsunit/regress/regress-904707.js b/implementation-contributed/v8/mjsunit/regress/regress-904707.js index 8ff8c3a0f2a347720cea8ea026feda6db465c3ef..fdf89c2b55c142aecfd8190ab85b7fb203370e43 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-904707.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-904707.js @@ -8,7 +8,7 @@ delete Float64Array.prototype.__proto__[Symbol.iterator]; let a = new Float64Array(9); Object.defineProperty(a, "length", { - get: function () { %ArrayBufferNeuter(a.buffer); return 6; } + get: function () { %ArrayBufferDetach(a.buffer); return 6; } }); Float64Array.from(a); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js index d786875d76851e9993a485fa68b914c52e9cdb6a..5002ceaf206ae1053e509fb7ef961207b1ad9e5a 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-crbug-691323.js @@ -7,7 +7,7 @@ var buffer = new ArrayBuffer(0x100); var array = new Uint8Array(buffer).fill(55); var tmp = {}; tmp[Symbol.toPrimitive] = function () { - %ArrayBufferNeuter(array.buffer) + %ArrayBufferDetach(array.buffer) return 0; }; @@ -18,7 +18,7 @@ buffer = new ArrayBuffer(0x100); array = new Uint8Array(buffer).fill(55); tmp = {}; tmp[Symbol.toPrimitive] = function () { - %ArrayBufferNeuter(array.buffer) + %ArrayBufferDetach(array.buffer) return 0; }; @@ -29,7 +29,7 @@ buffer = new ArrayBuffer(0x100); array = new Uint8Array(buffer).fill(55); tmp = {}; tmp[Symbol.toPrimitive] = function () { - %ArrayBufferNeuter(array.buffer) + %ArrayBufferDetach(array.buffer) return 0; }; assertEquals(true, Array.prototype.includes.call(array, undefined, tmp)); diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js index f108f2acc463ce5bf005122866d3d068c86549db..76d2121640950c523a770b4c9954327f9effa264 100644 --- a/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js +++ b/implementation-contributed/v8/mjsunit/regress/regress-crbug-867776.js @@ -8,7 +8,7 @@ for (var i = 0; i < 3; i++) { var array = new BigInt64Array(200); function evil_callback() { - %ArrayBufferNeuter(array.buffer); + %ArrayBufferDetach(array.buffer); gc(); return 1094795585n; } diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.js new file mode 100644 index 0000000000000000000000000000000000000000..2de99d6efc894b0ac7d216290ba6f294fe9c9940 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913212.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. + +const globalThis = this; +Object.setPrototypeOf(this, new Proxy({}, { + get(target, prop, receiver) { + assertTrue(receiver === globalThis); + } +})); +undefined_name_access diff --git a/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js new file mode 100644 index 0000000000000000000000000000000000000000..3fab06607f51aeca4752afca9cde56cc42e567c9 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/regress/regress-crbug-913296.js @@ -0,0 +1,13 @@ +// 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(trigger) { + return Object.is((trigger ? -0 : 0) - 0, -0); +} + +assertFalse(foo(false)); +%OptimizeFunctionOnNextCall(foo); +assertTrue(foo(true)); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js index 75c8a457bbd57b08118fd5bce70e9aad2d466f64..5471f60a71b3cee2eed8a1031b69fde6a973de5d 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-680938.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. -var v17 = {}; -var v32 = {}; +var v17 = 42; +var v32 = { initial: 1 }; v39 = new WebAssembly.Memory(v32); v49 = v39.grow(v17); diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js index 39f03c1072c9399429c834f582d480ecd8b47887..033732f368240f8f358cb91577808042c785b73a 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-736584.js @@ -7,7 +7,7 @@ load('test/mjsunit/wasm/wasm-constants.js'); load('test/mjsunit/wasm/wasm-module-builder.js'); -let mem = new WebAssembly.Memory({}); +let mem = new WebAssembly.Memory({initial: 0}); let builder = new WasmModuleBuilder(); builder.addImportedMemory("mod", "imported_mem"); builder.addFunction('mem_size', kSig_i_v) diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js index a9cb71557009ec43c7eb19b6b1f754af0458ac73..1fca02fe82779472f4777149e84eaa24fd97e9ff 100644 --- a/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-816226.js @@ -2,4 +2,4 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -(new Int8Array((new WebAssembly.Memory({})).buffer)).buffer; +(new Int8Array((new WebAssembly.Memory({initial: 0})).buffer)).buffer; diff --git a/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js b/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.js new file mode 100644 index 0000000000000000000000000000000000000000..c12013c9f86c87ae7b9ae83e86b1c3cf1fdfa55a --- /dev/null +++ b/implementation-contributed/v8/mjsunit/regress/wasm/regress-913804.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. + +load('test/mjsunit/wasm/wasm-constants.js'); +load('test/mjsunit/wasm/wasm-module-builder.js'); + +const builder = new WasmModuleBuilder(); +builder.addFunction('main', kSig_v_v).addBody([ + kExprLoop, kWasmStmt, // loop + /**/ kExprBr, 0x01, // br depth=1 + /**/ kExprBlock, kWasmStmt, // block + /**/ /**/ kExprBr, 0x02, // br depth=2 + /**/ /**/ kExprEnd, // end [block] + /**/ kExprEnd // end [loop] +]); +builder.instantiate(); diff --git a/implementation-contributed/v8/mjsunit/samevalue.js b/implementation-contributed/v8/mjsunit/samevalue.js index 1e5384d73d5fa642e4d525b8a1367485f107bb4f..30cce35bcceb168bbc9a23975604d126ab4f05e0 100644 --- a/implementation-contributed/v8/mjsunit/samevalue.js +++ b/implementation-contributed/v8/mjsunit/samevalue.js @@ -26,7 +26,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --expose-natives-as natives --allow-natives-syntax +// Flags: --allow-natives-syntax // Test the SameValue and SameValueZero internal methods. var obj1 = {x: 10, y: 11, z: "test"}; diff --git a/implementation-contributed/v8/test262/detachArrayBuffer.js b/implementation-contributed/v8/test262/detachArrayBuffer.js index 959773b5ca1d66f4d57d1f3ea304d9a6c80d74bd..d9ca415c2bf0981554beee1b94d9595183501e8b 100644 --- a/implementation-contributed/v8/test262/detachArrayBuffer.js +++ b/implementation-contributed/v8/test262/detachArrayBuffer.js @@ -3,7 +3,7 @@ // found in the LICENSE file. function $DETACHBUFFER(buffer) { - %ArrayBufferNeuter(buffer); + %ArrayBufferDetach(buffer); } $262.detachArrayBuffer = $DETACHBUFFER; diff --git a/implementation-contributed/v8/test262/test262.status b/implementation-contributed/v8/test262/test262.status index ecab026c989c44d8fb8dbd96b0563dba6604d4ae..e43eba805d2471f350cd49eab865198fd51115c7 100644 --- a/implementation-contributed/v8/test262/test262.status +++ b/implementation-contributed/v8/test262/test262.status @@ -179,232 +179,232 @@ # https://bugs.chromium.org/p/v8/issues/detail?id=896 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F': [FAIL_PHASE_ONLY], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL], - 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL], - 'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL], - 'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL], - 'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL], - 'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL], - 'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL], - 'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL], - 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL], - 'language/literals/regexp/early-err-pattern': [FAIL], - 'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL], - 'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL], - 'language/literals/regexp/invalid-braced-quantifier-range': [FAIL], - 'language/literals/regexp/invalid-optional-lookbehind': [FAIL], - 'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL], - 'language/literals/regexp/invalid-range-lookbehind': [FAIL], - 'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL], - 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL], - 'language/literals/regexp/u-dec-esc': [FAIL], - 'language/literals/regexp/u-invalid-class-escape': [FAIL], - 'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL], - 'language/literals/regexp/u-invalid-identity-escape': [FAIL], - 'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL], - 'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL], - 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL], - 'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL], - 'language/literals/regexp/u-invalid-optional-lookahead': [FAIL], - 'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL], - 'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL], - 'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL], - 'language/literals/regexp/u-invalid-range-lookahead': [FAIL], - 'language/literals/regexp/u-invalid-range-lookbehind': [FAIL], - 'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL], - 'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL], - 'language/literals/regexp/u-unicode-esc-bounds': [FAIL], - 'language/literals/regexp/u-unicode-esc-non-hex': [FAIL], - 'language/literals/regexp/unicode-escape-nls-err': [FAIL], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/character-class-range-end': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/character-class-range-no-dash-end': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/character-class-range-no-dash-start': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/character-class-range-start': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-empty': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-empty-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-invalid': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-invalid-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-no-braces': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator-only': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-unclosed': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-unopened': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/grammar-extension-unopened-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-01': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-01-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-02': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-02-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-03': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-03-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-04': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-04-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-05': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-05-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-06': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-06-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-07': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-07-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-08': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-08-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-09': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-09-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-10': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-10-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-11': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-11-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-12': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-12-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-13': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-13-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-14': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/loose-matching-14-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-binary-property': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-binary-property-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-and-value': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-and-value-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-existing-value': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-Script': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/non-existent-property-value-general-category': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value': [FAIL_PHASE_ONLY], + 'built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated': [FAIL_PHASE_ONLY], + 'language/literals/regexp/early-err-pattern': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-braced-quantifier-exact': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-braced-quantifier-lower': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-braced-quantifier-range': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-optional-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-range-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-2': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-2-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-3': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-3-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-4': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-4-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-5': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-2-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-duplicate-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-empty-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-empty-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-identity-escape-in-capture-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-2-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-3-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-4': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-5': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-6': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-2-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-continue-groupspecifier-4-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-2-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-3': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-4-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-5-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-6': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-7': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-8-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-9-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-non-id-start-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-numeric-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-punctuator-starting-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-punctuator-within-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-u-escape-in-groupspecifier-2': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier': [FAIL_PHASE_ONLY], + 'language/literals/regexp/named-groups/invalid-unterminated-groupspecifier-u': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-dec-esc': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-class-escape': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-extended-pattern-char': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-identity-escape': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-legacy-octal-escape': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-non-empty-class-ranges': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-oob-decimal-escape': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-optional-lookahead': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-optional-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-optional-negative-lookahead': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-optional-negative-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-range-lookahead': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-range-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-range-negative-lookahead': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-invalid-range-negative-lookbehind': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-unicode-esc-bounds': [FAIL_PHASE_ONLY], + 'language/literals/regexp/u-unicode-esc-non-hex': [FAIL_PHASE_ONLY], + 'language/literals/regexp/unicode-escape-nls-err': [FAIL_PHASE_ONLY], # https://bugs.chromium.org/p/v8/issues/detail?id=7828 'language/statements/try/early-catch-function': [FAIL], @@ -586,10 +586,6 @@ '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=7481 - 'intl402/NumberFormat/ignore-invalid-unicode-ext-values': [FAIL], - 'intl402/DateTimeFormat/ignore-invalid-unicode-ext-values': [FAIL], - # https://bugs.chromium.org/p/v8/issues/detail?id=7482 'intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode': [FAIL], @@ -604,7 +600,9 @@ # https://crbug.com/v8/7808 'intl402/String/prototype/localeCompare/returns-same-results-as-Collator': [SKIP], 'intl402/Collator/prototype/compare/bound-to-collator-instance': [SKIP], - 'intl402/Collator/ignore-invalid-unicode-ext-values': [SKIP], + + # 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 'intl402/Locale/constructor-non-iana-canon': [FAIL], @@ -672,14 +670,13 @@ 'intl402/Segmenter/prototype/segment/segment-word': [FAIL], # https://bugs.chromium.org/p/v8/issues/detail?id=8021 - 'built-ins/Object/fromEntries/requires-argument': [FAIL], + 'built-ins/Object/fromEntries/requires-argument': [SKIP], ######################## NEEDS INVESTIGATION ########################### # These test failures are specific to the intl402 suite and need investigation # to be either marked as bugs with issues filed for them or as deliberate # incompatibilities if the test cases turn out to be broken or ambiguous. # Some of these are related to v8:4361 in being visible side effects from Intl. - 'intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle': [FAIL], # https://bugs.chromium.org/p/v8/issues/detail?id=7833 'built-ins/Atomics/wait/cannot-suspend-throws': [SKIP], @@ -734,6 +731,10 @@ 'harness/detachArrayBuffer': [SKIP], 'harness/detachArrayBuffer-host-detachArrayBuffer': [SKIP], + # Test needs to be updated to spec changes. + # https://github.com/tc39/test262/pull/1990 + 'built-ins/String/prototype/matchAll/regexp-prototype-has-no-matchAll': [FAIL], + ############################ SKIPPED TESTS ############################# # These tests take a looong time to run. diff --git a/implementation-contributed/v8/test262/testcfg.py b/implementation-contributed/v8/test262/testcfg.py index 9052aab12fa8d3c20fbeae4bb4dd88c8a6b1925b..02e4dcd8b6e2c7a7c5196d4046e534a48d888f20 100644 --- a/implementation-contributed/v8/test262/testcfg.py +++ b/implementation-contributed/v8/test262/testcfg.py @@ -87,15 +87,23 @@ class VariantsGenerator(testsuite.VariantsGenerator): def gen(self, test): flags_set = self._get_flags_set(test) test_record = test.test_record - for n, variant in enumerate(self._get_variants(test)): - flags = flags_set[variant][0] - if 'noStrict' in test_record: - yield (variant, flags, str(n)) - elif 'onlyStrict' in test_record: - yield (variant, flags + ['--use-strict'], 'strict-%d' % n) - else: - yield (variant, flags, str(n)) - yield (variant, flags + ['--use-strict'], 'strict-%d' % n) + + # Add a reverse test ensuring that FAIL_PHASE_ONLY is only used for tests + # that actually fail to throw an exception at wrong phase. + phase_variants = [''] + if test.fail_phase_only: + phase_variants.append('-fail-phase-reverse') + + for phase_var in phase_variants: + for n, variant in enumerate(self._get_variants(test)): + flags = flags_set[variant][0] + if 'noStrict' in test_record: + yield (variant, flags, str(n) + phase_var) + elif 'onlyStrict' in test_record: + yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var) + else: + yield (variant, flags, str(n)) + yield (variant, flags + ['--use-strict'], 'strict-%d' % n + phase_var) class TestSuite(testsuite.TestSuite): @@ -169,13 +177,34 @@ class TestCase(testcase.D8TestCase): .get('type', None) ) + # We disallow combining FAIL_PHASE_ONLY with any other fail outcome types. + # Outcome parsing logic in the base class converts all outcomes specified in + # the status file into either FAIL, CRASH or PASS, thus we do not need to + # handle FAIL_OK, FAIL_SLOPPY and various other outcomes. + if self.fail_phase_only: + assert ( + statusfile.FAIL not in self.expected_outcomes and + statusfile.CRASH not in self.expected_outcomes), self.name + + @property + def fail_phase_only(self): + # The FAIL_PHASE_ONLY is defined in tools/testrunner/local/statusfile.py and + # can be used in status files to mark tests that throw an exception at wrong + # phase, e.g. SyntaxError is thrown at execution phase instead of parsing + # phase. See https://crbug.com/v8/8467 for more details. + return statusfile.FAIL_PHASE_ONLY in self._statusfile_outcomes + + @property + def _fail_phase_reverse(self): + return 'fail-phase-reverse' in self.procid + def _get_files_params(self): return ( list(self.suite.harness) + ([os.path.join(self.suite.root, "harness-agent.js")] if self.path.startswith('built-ins/Atomics') else []) + ([os.path.join(self.suite.root, "harness-adapt-donotevaluate.js")] - if self.fail_phase_only else []) + + if self.fail_phase_only and not self._fail_phase_reverse else []) + self._get_includes() + (["--module"] if "module" in self.test_record else []) + [self._get_source_path()] @@ -213,7 +242,12 @@ class TestCase(testcase.D8TestCase): def output_proc(self): if self._expected_exception is not None: return test262.ExceptionOutProc(self.expected_outcomes, - self._expected_exception) + self._expected_exception, + self._fail_phase_reverse) + else: + # We only support fail phase reverse on tests that expect an exception. + assert not self._fail_phase_reverse + if self.expected_outcomes == outproc.OUTCOMES_PASS: return test262.PASS_NO_EXCEPTION return test262.NoExceptionOutProc(self.expected_outcomes) diff --git a/implementation-contributed/v8/wasm-js/wasm-js.status b/implementation-contributed/v8/wasm-js/wasm-js.status index fe74ca47f54e8515035a9ee41e90564e0e845573..4593a73c6e720fa7d290fb96a93243cfcbfbfc5f 100644 --- a/implementation-contributed/v8/wasm-js/wasm-js.status +++ b/implementation-contributed/v8/wasm-js/wasm-js.status @@ -6,9 +6,7 @@ [ALWAYS, { # https://bugs.chromium.org/p/v8/issues/detail?id=8319 'memory/grow': [FAIL], - 'memory/constructor': [FAIL], 'table/grow': [FAIL], - 'table/constructor': [FAIL], 'table/get-set': [FAIL], 'module/customSections': [FAIL], 'global/constructor': [FAIL],