shifted-elements2.js (539B)
1 // Always use the per-element barrier. 2 gczeal(12); 3 4 function f() { 5 var arr = []; 6 for (var i = 0; i < 1000; i++) 7 arr.push(i); 8 gc(); // Ensure arr is tenured. 9 10 // Now store a nursery object somewhere in the array, shift elements, 11 // trigger a GC, and check the post barrier kept the object alive. 12 for (var i = 0; i < 20; i++) 13 arr.shift(); 14 for (var i = 0; i < 40; i++) 15 arr[900] = {x: i}; 16 for (var i = 0; i < 10; i++) 17 arr.shift(); 18 gc(); 19 20 assertEq(arr[890].x, 39); 21 } 22 f();