range-analysis.js (730B)
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 }