store-dense-element-hole.js (928B)
1 // Store an element into a previous hole value and later add more elements 2 // exceeding the initialised length. Cover both mono- and polymorphic call 3 // sites. 4 5 function testStoreDenseHole() { 6 var array = [/* hole */, /* hole */, /* hole */, /* hole */, ]; 7 8 function store(ar, index) { 9 ar[index] = index; 10 } 11 12 for (var i = 0; i < 10; ++i) { 13 store(array, i); 14 } 15 16 assertEq(array.length, 10); 17 for (var i = 0; i < 10; ++i) { 18 assertEq(array[i], i); 19 } 20 } 21 testStoreDenseHole(); 22 23 function testStoreDenseHolePoly() { 24 var array = [/* hole */, /* hole */, /* hole */, /* hole */, ]; 25 26 function store(ar, index) { 27 ar[index] = index; 28 } 29 30 var objects = [array, {}]; 31 32 for (var i = 0; i < 10; ++i) { 33 for (var j = 0; j < objects.length; ++j) { 34 store(objects[j], i); 35 } 36 } 37 38 assertEq(array.length, 10); 39 for (var i = 0; i < 10; ++i) { 40 assertEq(array[i], i); 41 } 42 } 43 testStoreDenseHolePoly();