summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/array-length.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/array-length.js')
-rw-r--r--deps/v8/test/mjsunit/compiler/array-length.js46
1 files changed, 33 insertions, 13 deletions
diff --git a/deps/v8/test/mjsunit/compiler/array-length.js b/deps/v8/test/mjsunit/compiler/array-length.js
index 10be42a439..aa2210893c 100644
--- a/deps/v8/test/mjsunit/compiler/array-length.js
+++ b/deps/v8/test/mjsunit/compiler/array-length.js
@@ -38,16 +38,36 @@ function Test(a0, a2, a5) {
var a0 = [];
var a2 = [1,2];
var a5 = [1,2,3,4,5];
-%PrepareFunctionForOptimization(ArrayLength);
-for (var i = 0; i < 5; i++) Test(a0, a2, a5);
-%OptimizeFunctionOnNextCall(ArrayLength);
-Test(a0, a2, a5);
-%PrepareFunctionForOptimization(Test);
-%OptimizeFunctionOnNextCall(Test);
-Test(a0, a2, a5);
-assertEquals("undefined", typeof(ArrayLength(0)));
-%PrepareFunctionForOptimization(Test);
-for (var i = 0; i < 5; i++) Test(a0, a2, a5);
-%OptimizeFunctionOnNextCall(Test);
-Test(a0, a2, a5);
-assertEquals(4, ArrayLength("hest"));
+
+function MainTest() {
+ %PrepareFunctionForOptimization(ArrayLength);
+ for (var i = 0; i < 5; i++) Test(a0, a2, a5);
+ %OptimizeFunctionOnNextCall(ArrayLength);
+ Test(a0, a2, a5);
+ %PrepareFunctionForOptimization(Test);
+ %OptimizeFunctionOnNextCall(Test);
+ Test(a0, a2, a5);
+ assertEquals("undefined", typeof(ArrayLength(0)));
+ %PrepareFunctionForOptimization(Test);
+ for (var i = 0; i < 5; i++) Test(a0, a2, a5);
+ %OptimizeFunctionOnNextCall(Test);
+ Test(a0, a2, a5);
+ assertEquals(4, ArrayLength("hest"));
+}
+MainTest();
+
+// Non-extensible, sealed, frozen
+a0 = Object.preventExtensions([]);
+a2 = Object.seal([1,2]);
+a5 = Object.freeze([1,2,3,4,5]);
+MainTest();
+
+a0 = Object.seal([]);
+a2 = Object.freeze([1,2]);
+a5 = Object.preventExtensions([1,2,3,4,5]);
+MainTest();
+
+a0 = Object.freeze([]);
+a2 = Object.preventExtensions([1,2]);
+a5 = Object.seal([1,2,3,4,5]);
+MainTest();