summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/shifted-elements2.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/basic/shifted-elements2.js')
-rw-r--r--js/src/jit-test/tests/basic/shifted-elements2.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/shifted-elements2.js b/js/src/jit-test/tests/basic/shifted-elements2.js
new file mode 100644
index 0000000000..f989db1542
--- /dev/null
+++ b/js/src/jit-test/tests/basic/shifted-elements2.js
@@ -0,0 +1,22 @@
+// Always use the per-element barrier.
+gczeal(12);
+
+function f() {
+ var arr = [];
+ for (var i = 0; i < 1000; i++)
+ arr.push(i);
+ gc(); // Ensure arr is tenured.
+
+ // Now store a nursery object somewhere in the array, shift elements,
+ // trigger a GC, and check the post barrier kept the object alive.
+ for (var i = 0; i < 20; i++)
+ arr.shift();
+ for (var i = 0; i < 40; i++)
+ arr[900] = {x: i};
+ for (var i = 0; i < 10; i++)
+ arr.shift();
+ gc();
+
+ assertEq(arr[890].x, 39);
+}
+f();