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