summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/constant-fold-cow-array.js
diff options
context:
space:
mode:
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.js50
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());