1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/nativeElementAccesses.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,44 @@ 1.4 + 1.5 +function testOverwritingSparseHole() 1.6 +{ 1.7 + var x = []; 1.8 + for (var i = 0; i < 50; i++) 1.9 + x[i] = i; 1.10 + var hit = false; 1.11 + Object.defineProperty(x, 40, {set: function() { hit = true; }}); 1.12 + for (var i = 0; i < 50; i++) 1.13 + x[i] = 10; 1.14 + assertEq(hit, true); 1.15 +} 1.16 +testOverwritingSparseHole(); 1.17 + 1.18 +function testReadingSparseHole() 1.19 +{ 1.20 + var x = []; 1.21 + for (var i = 5; i < 50; i++) 1.22 + x[i] = i; 1.23 + var hit = false; 1.24 + Object.defineProperty(x, 40, {get: function() { hit = true; return 5.5; }}); 1.25 + var res = 0; 1.26 + for (var i = 0; i < 50; i++) { 1.27 + res += x[i]; 1.28 + if (i == 10) 1.29 + res = 0; 1.30 + } 1.31 + assertEq(res, 1135.5); 1.32 + assertEq(hit, true); 1.33 +} 1.34 +testReadingSparseHole(); 1.35 + 1.36 +function testInSparseHole() 1.37 +{ 1.38 + var x = []; 1.39 + for (var i = 5; i < 50; i++) 1.40 + x[i] = i; 1.41 + Object.defineProperty(x, 40, {get: function() {}}); 1.42 + var res = 0; 1.43 + for (var i = 0; i < 50; i++) 1.44 + res += (i in x) ? 1 : 0; 1.45 + assertEq(res, 45); 1.46 +} 1.47 +testInSparseHole();