michael@0: function f() { michael@0: var x = Math.pow(2, 31); // take it as argument if constant propagation comes in you way. michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 32 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 33 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 34 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 35 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 36 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 37 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 38 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 39 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 40 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 41 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 42 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 43 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 44 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 45 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 46 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 47 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 48 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 49 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 50 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 51 michael@0: x = x + x; assertEq((x + 1) | 0, 1); // 2 ** 52 michael@0: x = x + x; assertEq((x + 1) | 0, 0); // 2 ** 53 michael@0: } michael@0: michael@0: for (var i = 0; i <= 100000; i++) michael@0: f();