bug936740.js (691B)
1 function ceil(x) { 2 return Math.ceil(x); 3 } 4 5 // Compiled as Ceil(double -> int32) 6 assertEq(ceil(1.1), 2); 7 assertEq(ceil(-1.1), -1); 8 assertEq(ceil(-3), -3); 9 10 // As we use the identity Math.ceil(x) == -Math.floor(-x) and Floor(-0) bails out, 11 // this should bail out. 12 assertEq(ceil(0), 0); 13 assertEq(ceil(0), 0); 14 15 // Reuses the Ceil(double -> int32) path 16 assertEq(ceil(1.1), 2); 17 assertEq(ceil(-1.1), -1); 18 assertEq(ceil(-3), -3); 19 20 // Bails out and then compiles as Ceil(double -> double) 21 assertEq(ceil(-0), -0); 22 assertEq(ceil(Math.pow(2, 32)), Math.pow(2, 32)); 23 assertEq(ceil(-0), -0); 24 25 // Still works but not inlined as double -> int32 (it still uses double -> double) 26 assertEq(ceil(1.5), 2);