diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js b/deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js index 746277d67b..0f8891769b 100644 --- a/deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js +++ b/deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js @@ -36,9 +36,10 @@ assertUnoptimized(foo); })(); +// Packed // Non-extensible (function() { - const a = Object.preventExtensions([1, 2, 3]); + const a = Object.preventExtensions([1, 2, '3']); const foo = () => a[0]; %PrepareFunctionForOptimization(foo); assertEquals(1, foo()); @@ -52,7 +53,7 @@ // Sealed (function() { - const a = Object.seal([1, 2, 3]); + const a = Object.seal([1, 2, '3']); const foo = () => a[0]; %PrepareFunctionForOptimization(foo); assertEquals(1, foo()); @@ -66,7 +67,50 @@ // Frozen (function() { - const a = Object.freeze([1, 2, 3]); + const a = Object.freeze([1, 2, '3']); + const foo = () => a[0]; + %PrepareFunctionForOptimization(foo); + assertEquals(1, foo()); + assertEquals(1, foo()); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo()); + assertOptimized(foo); + a[0] = 42; + assertEquals(1, foo()); +})(); + +// Holey +// Non-extensible +(function() { + const a = Object.preventExtensions([1, 2, , '3']); + const foo = () => a[0]; + %PrepareFunctionForOptimization(foo); + assertEquals(1, foo()); + assertEquals(1, foo()); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo()); + assertOptimized(foo); + a[0] = 42; + assertEquals(42, foo()); +})(); + +// Sealed +(function() { + const a = Object.seal([1, 2, , '3']); + const foo = () => a[0]; + %PrepareFunctionForOptimization(foo); + assertEquals(1, foo()); + assertEquals(1, foo()); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo()); + assertOptimized(foo); + a[0] = 42; + assertEquals(42, foo()); +})(); + +// Frozen +(function() { + const a = Object.freeze([1, 2, , '3']); const foo = () => a[0]; %PrepareFunctionForOptimization(foo); assertEquals(1, foo()); |