array-slice.js (671B)
1 function packed() { 2 var a = [0, 1, 2, 3]; 3 for (var i = 0; i <= 100; ++i) { 4 var r = a.slice(0); 5 assertEq(r.length, 4); 6 } 7 } 8 9 for (var i = 0; i < 2; ++i) { 10 packed(); 11 } 12 13 function packedThenUnpacked() { 14 var a = [0, 1, 2, 3]; 15 var q = 0; 16 for (var i = 0; i <= 100; ++i) { 17 if (i === 100) a[10] = 0; 18 19 var r = a.slice(0); 20 assertEq(r.length, i < 100 ? 4 : 11); 21 } 22 } 23 24 for (var i = 0; i < 2; ++i) { 25 packedThenUnpacked(); 26 } 27 28 function unpacked() { 29 var a = [0, 1, /* hole */ , 3]; 30 for (var i = 0; i <= 100; ++i) { 31 var r = a.slice(0); 32 assertEq(r.length, 4); 33 assertEq(2 in r, false); 34 } 35 } 36 37 for (var i = 0; i < 2; ++i) { 38 unpacked(); 39 }