From cd95f95cf23e241d06399f739be5a8f935e7fafa Mon Sep 17 00:00:00 2001 From: test262-automation Date: Fri, 21 Sep 2018 18:29:27 +0000 Subject: [PATCH] [javascriptcore-test262-automation] Changes from https://github.com/webkit/webkit.git at sha d51ed02c2b on Fri Sep 21 2018 18:26:42 GMT+0000 (Coordinated Universal Time) --- .../array-indexof-array-prototype-trap.js | 45 +++++++++++++ ...array-indexof-have-a-bad-time-c-runtime.js | 43 ++++++++++++ .../stress/array-indexof-hole-nan.js | 19 ++++++ .../stress/array-indexof-infinity.js | 21 ++++++ .../stress/array-indexof-negative-zero.js | 20 ++++++ .../stress/array-indexof-own-getter.js | 66 +++++++++++++++++++ .../stress/array-indexof-prototype-trap.js | 48 ++++++++++++++ ...must-filter-value-before-filtering-base.js | 25 +++++++ 8 files changed, 287 insertions(+) create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-infinity.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js create mode 100644 implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js create mode 100644 implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js new file mode 100644 index 0000000000..4c94be03f3 --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-array-prototype-trap.js @@ -0,0 +1,45 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +class AncestorArray extends Object { + get 2() { + this.called = true; + return 42; + } +} + +Array.prototype.__proto__ = AncestorArray.prototype; + +{ + let array = []; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [20, 20]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [42.195]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.length = 42; + ensureArrayStorage(array); + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js b/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js new file mode 100644 index 0000000000..91696c70ea --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-have-a-bad-time-c-runtime.js @@ -0,0 +1,43 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +Object.defineProperty(Array.prototype, 2, { + get() { + this.called = true; + return 42; + } +}); + +{ + let array = []; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [20, 20]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [42.195]; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.length = 42; + ensureArrayStorage(array); + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js b/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js new file mode 100644 index 0000000000..7374a4998f --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-hole-nan.js @@ -0,0 +1,19 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + + +{ + let array = [42, , , 0]; + shouldBe(array.indexOf(Number.NaN), -1); + shouldBe(array.indexOf(0), 3); +} +{ + let array = [42.195, , , 0]; + shouldBe(array.indexOf(Number.NaN), -1); +} +{ + let array = [42.195, Number.NaN, , 0]; + shouldBe(array.indexOf(Number.NaN), -1); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js b/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js new file mode 100644 index 0000000000..1a089c9e34 --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-infinity.js @@ -0,0 +1,21 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +{ + let array = [42.195, -0.0, -Infinity]; + shouldBe(array.indexOf(Infinity), -1); + shouldBe(array.indexOf(-Infinity), 2); + shouldBe(array.indexOf(42), -1); +} +{ + let array = [1, 2, 3, 0]; + shouldBe(array.indexOf(Infinity), -1); + shouldBe(array.indexOf(-Infinity), -1); +} +{ + let array = ["String", 42.5, Infinity, 33]; + shouldBe(array.indexOf(Infinity), 2); + shouldBe(array.indexOf(-Infinity), -1); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js b/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js new file mode 100644 index 0000000000..c7b7d70990 --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-negative-zero.js @@ -0,0 +1,20 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +{ + let array = [42.195, -0.0]; + shouldBe(array.indexOf(0), 1); + shouldBe(array.indexOf(-0), 1); +} +{ + let array = [42.195, 0, -0.0]; + shouldBe(array.indexOf(0), 1); + shouldBe(array.indexOf(-0), 1); +} +{ + let array = [42, 0]; + shouldBe(array.indexOf(0), 1); + shouldBe(array.indexOf(-0), 1); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js b/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js new file mode 100644 index 0000000000..2d06ff58d6 --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-own-getter.js @@ -0,0 +1,66 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +{ + let array = []; + Object.defineProperty(array, 2, { + get() { + this.called = true; + return 42; + } + }); + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [20, 20]; + Object.defineProperty(array, 2, { + get() { + this.called = true; + return 42; + } + }); + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + Object.defineProperty(array, 2, { + get() { + this.called = true; + return 42; + } + }); + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [42.195]; + Object.defineProperty(array, 2, { + get() { + this.called = true; + return 42; + } + }); + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + Object.defineProperty(array, 2, { + get() { + this.called = true; + return 42; + } + }); + array.length = 42; + ensureArrayStorage(array); + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} diff --git a/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js b/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js new file mode 100644 index 0000000000..3229247c3e --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/array-indexof-prototype-trap.js @@ -0,0 +1,48 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual); +} + +class DerivedArray extends Array { + get 2() { + this.called = true; + return 42; + } +} + +{ + let array = []; + array.__proto__ = DerivedArray.prototype; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [20, 20]; + array.__proto__ = DerivedArray.prototype; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.__proto__ = DerivedArray.prototype; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = [42.195]; + array.__proto__ = DerivedArray.prototype; + array.length = 42; + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} +{ + let array = ["Hello"]; + array.__proto__ = DerivedArray.prototype; + array.length = 42; + ensureArrayStorage(array); + shouldBe(array.indexOf(42), 2); + shouldBe(array.called, true); +} diff --git a/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js b/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js new file mode 100644 index 0000000000..b623e04fee --- /dev/null +++ b/implementation-contributed/javascriptcore/stress/multi-put-by-offset-must-filter-value-before-filtering-base.js @@ -0,0 +1,25 @@ +//@ runDefault("--collectContinuously=1", "--useConcurrentJIT=0", "--useConcurrentGC=1") + +function foo(oo) { + oo.x = 4; + oo.y = 4; + oo.e = oo; + oo.e = 7; + oo.f = 8; +} +noInline(foo); + +function Foo() { + foo(this); +} + +for (var i = 0; i < 100000; i++) { + g(); +} + +function g(){ + foo({f:8}); + new Foo(); + new Foo(); + new Foo(); +}