|
1 // |jit-test| |
|
2 |
|
3 // Only fails with Ion. |
|
4 function add_xors_1() { |
|
5 var res = 0; |
|
6 var step = 4; |
|
7 for (var i = 0x7fffffff | 0; i >= (1 << step); i -= (i >> step)) { |
|
8 var x = i ^ (i << 1); |
|
9 res += (((x + x) + res + res) | 0); |
|
10 } |
|
11 return res; |
|
12 } |
|
13 |
|
14 var r1 = add_xors_1(); |
|
15 for (var i = 0; i < 100; i++) { |
|
16 var r2 = add_xors_1(); |
|
17 assertEq(r2, r1); |
|
18 } |
|
19 |
|
20 // Only fails with JM |
|
21 function add_xors_2() { |
|
22 var res = 0; |
|
23 var step = 4; |
|
24 for (var i = 0x7fffffff | 0; i >= (1 << step); i -= (i >> step)) { |
|
25 var x = i ^ (i << 1); |
|
26 res += ((x + x) + res + res) | 0; |
|
27 } |
|
28 return res; |
|
29 } |
|
30 |
|
31 var r1 = add_xors_2(); |
|
32 for (var i = 0; i < 100; i++) { |
|
33 var r2 = add_xors_2(); |
|
34 assertEq(r1, r2); |
|
35 } |