1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/setelem-hole.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,68 @@ 1.4 +// Storing a typed value. 1.5 +function test1() { 1.6 + var a = []; 1.7 + for (var i=0; i<130; i++) { 1.8 + a[i] = i + 1; 1.9 + } 1.10 + return a; 1.11 +} 1.12 + 1.13 +var arr = test1(); 1.14 +assertEq(arr.length, 130); 1.15 + 1.16 +for (var i=0; i<130; i++) 1.17 + assertEq(arr[i], i + 1); 1.18 + 1.19 +// Storing a Value. 1.20 +function getValue(x) { 1.21 + var y = x & 0x3; 1.22 + if (y == 0) return null; 1.23 + if (y == 1) return true; 1.24 + if (y == 2) return 1.23; 1.25 + if (y == 3) return Math; 1.26 + assertEq(0, 1); 1.27 +} 1.28 +getValue(0); 1.29 +getValue(1); 1.30 + 1.31 +function test2() { 1.32 + var a = []; 1.33 + for (var i=0; i<130; i++) { 1.34 + a[i] = getValue(i); 1.35 + } 1.36 + return a; 1.37 +} 1.38 + 1.39 +var arr = test2(); 1.40 +assertEq(arr.length, 130); 1.41 + 1.42 +for (var i=0; i<130; i++) 1.43 + assertEq(arr[i], getValue(i)); 1.44 + 1.45 +// Make sure the length-property is not updated if it's greater than 1.46 +// the (new) initialized length. 1.47 +function test3(arr, start, end) { 1.48 + for (var i=start; i<end; i++) { 1.49 + arr[i] = 10; 1.50 + } 1.51 +} 1.52 +var a = new Array(200); 1.53 +test3(a, 10, 130); 1.54 +assertEq(a.length, 200); 1.55 + 1.56 +for (var i=10; i<130; i++) 1.57 + assertEq(a[i], 10); 1.58 + 1.59 +test3(a, 130, 220); 1.60 +assertEq(a.length, 220); 1.61 + 1.62 +// Test constant index. 1.63 +function test4() { 1.64 + var a = [0, 1, 2, 3, 4, 5]; 1.65 + for (var i=0; i<150; i++) { 1.66 + a[6] = i; 1.67 + } 1.68 + return a; 1.69 +} 1.70 +var arr = test4(); 1.71 +assertEq(arr[6], 149);