js/src/jit-test/tests/ion/nativeElementAccesses.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:5d7f459d6076
1
2 function testOverwritingSparseHole()
3 {
4 var x = [];
5 for (var i = 0; i < 50; i++)
6 x[i] = i;
7 var hit = false;
8 Object.defineProperty(x, 40, {set: function() { hit = true; }});
9 for (var i = 0; i < 50; i++)
10 x[i] = 10;
11 assertEq(hit, true);
12 }
13 testOverwritingSparseHole();
14
15 function testReadingSparseHole()
16 {
17 var x = [];
18 for (var i = 5; i < 50; i++)
19 x[i] = i;
20 var hit = false;
21 Object.defineProperty(x, 40, {get: function() { hit = true; return 5.5; }});
22 var res = 0;
23 for (var i = 0; i < 50; i++) {
24 res += x[i];
25 if (i == 10)
26 res = 0;
27 }
28 assertEq(res, 1135.5);
29 assertEq(hit, true);
30 }
31 testReadingSparseHole();
32
33 function testInSparseHole()
34 {
35 var x = [];
36 for (var i = 5; i < 50; i++)
37 x[i] = i;
38 Object.defineProperty(x, 40, {get: function() {}});
39 var res = 0;
40 for (var i = 0; i < 50; i++)
41 res += (i in x) ? 1 : 0;
42 assertEq(res, 45);
43 }
44 testInSparseHole();

mercurial