bug1239075.js (664B)
1 function g0() { with({}){}; } 2 function f0(y, x) { 3 var a = y >>> 0; 4 a = a - 1 + 1; 5 g0(); // Capture the truncate result after the call. 6 var b = x / 2; // bailout. 7 return ~(a + b); 8 } 9 assertEq(f0(-1, 0), 0); 10 assertEq(f0(-1, 1), 0); 11 12 13 function g1() { with({}){}; } 14 function f1(y, x) { 15 var a = y >>> 0; 16 a = a - 1 + 1; 17 g1(); // Capture the truncate result after the call. 18 var b = Math.pow(x / 2, x); // bailout. 19 return ~(a + b); 20 } 21 assertEq(f1(-1, 0), -1); 22 assertEq(f1(-1, 1), 0); 23 24 function f2(x) { 25 return ~(((~0 | 0) >>> 0 || 0) + Math.pow(Math.cos(x >>> 0), Math.atan2(0, x))) 26 } 27 assertEq(f2(0), -1); 28 assertEq(f2(-9999), 0);