Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test|
// Only fails with Ion.
function add_xors_1() {
var res = 0;
var step = 4;
for (var i = 0x7fffffff | 0; i >= (1 << step); i -= (i >> step)) {
var x = i ^ (i << 1);
res += (((x + x) + res + res) | 0);
}
return res;
}
var r1 = add_xors_1();
for (var i = 0; i < 100; i++) {
var r2 = add_xors_1();
assertEq(r2, r1);
}
// Only fails with JM
function add_xors_2() {
var res = 0;
var step = 4;
for (var i = 0x7fffffff | 0; i >= (1 << step); i -= (i >> step)) {
var x = i ^ (i << 1);
res += ((x + x) + res + res) | 0;
}
return res;
}
var r1 = add_xors_2();
for (var i = 0; i < 100; i++) {
var r2 = add_xors_2();
assertEq(r1, r2);
}