add-dense-element.js (2223B)
1 // Add dense elements to packed and non-packed arrays. Cover both mono- and 2 // polymorphic call sites. 3 4 function testAddDenseEmpty() { 5 var array = []; 6 7 function store(ar, index) { 8 ar[index] = index; 9 } 10 11 for (var i = 0; i < 10; ++i) { 12 store(array, i); 13 } 14 15 assertEq(array.length, 10); 16 for (var i = 0; i < 10; ++i) { 17 assertEq(array[i], i); 18 } 19 } 20 testAddDenseEmpty(); 21 22 function testAddDensePacked() { 23 var array = [0, 1]; 24 25 function store(ar, index) { 26 ar[index] = index; 27 } 28 29 for (var i = 2; i < 10; ++i) { 30 store(array, i); 31 } 32 33 assertEq(array.length, 10); 34 for (var i = 0; i < 10; ++i) { 35 assertEq(array[i], i); 36 } 37 } 38 testAddDensePacked(); 39 40 function testAddDenseNonPacked() { 41 var array = [/* hole */, 1]; 42 43 function store(ar, index) { 44 ar[index] = index; 45 } 46 47 for (var i = 2; i < 10; ++i) { 48 store(array, i); 49 } 50 51 assertEq(array.length, 10); 52 assertEq(0 in array, false); 53 for (var i = 1; i < 10; ++i) { 54 assertEq(array[i], i); 55 } 56 } 57 testAddDenseNonPacked(); 58 59 function testAddDenseEmptyPoly() { 60 var array = []; 61 62 function store(ar, index) { 63 ar[index] = index; 64 } 65 66 var objects = [array, {}]; 67 68 for (var i = 0; i < 10; ++i) { 69 for (var j = 0; j < objects.length; ++j) { 70 store(objects[j], i); 71 } 72 } 73 74 assertEq(array.length, 10); 75 for (var i = 0; i < 10; ++i) { 76 assertEq(array[i], i); 77 } 78 } 79 testAddDenseEmptyPoly(); 80 81 function testAddDensePackedPoly() { 82 var array = [0, 1]; 83 84 function store(ar, index) { 85 ar[index] = index; 86 } 87 88 var objects = [array, {}]; 89 90 for (var i = 2; i < 10; ++i) { 91 for (var j = 0; j < objects.length; ++j) { 92 store(objects[j], i); 93 } 94 } 95 96 assertEq(array.length, 10); 97 for (var i = 0; i < 10; ++i) { 98 assertEq(array[i], i); 99 } 100 } 101 testAddDensePackedPoly(); 102 103 function testAddDenseNonPackedPoly() { 104 var array = [/* hole */, 1]; 105 106 function store(ar, index) { 107 ar[index] = index; 108 } 109 110 var objects = [array, {}]; 111 112 for (var i = 2; i < 10; ++i) { 113 for (var j = 0; j < objects.length; ++j) { 114 store(objects[j], i); 115 } 116 } 117 118 assertEq(array.length, 10); 119 assertEq(0 in array, false); 120 for (var i = 1; i < 10; ++i) { 121 assertEq(array[i], i); 122 } 123 } 124 testAddDenseNonPackedPoly();