mathTrunc.js (1955B)
1 // Test Math.trunc() for IonMonkey. 2 // Requires --ion-eager to enter at the top of each loop. 3 4 var truncDITests = [ 5 [0.49999999999999997, 0], 6 [0.5, 0], 7 [1.0, 1], 8 [1.5, 1], 9 [792.8, 792], 10 [-1.0001, -1], 11 [-3.14, -3], 12 [2137483649.5, 2137483649], 13 [2137483648.5, 2137483648], 14 [2137483647.1, 2137483647], 15 [-2147483647.8, -2147483647], 16 ]; 17 18 var truncDITests_bailout = [ 19 ...truncDITests, 20 21 // Bailout in bailoutCvttsd2si: https://bugzil.la/1379626#c1 22 [-2147483648.8, -2147483648], 23 ]; 24 25 var truncDTests = [ 26 [-0, -0], 27 [0.49999999999999997, 0], 28 [0.5, 0], 29 [1.0, 1], 30 [1.5, 1], 31 [792.8, 792], 32 [-0.1, -0], 33 [-1.0001, -1], 34 [-3.14, -3], 35 [2137483649.5, 2137483649], 36 [2137483648.5, 2137483648], 37 [2137483647.1, 2137483647], 38 [900000000000, 900000000000], 39 [-0, -0], 40 [-Infinity, -Infinity], 41 [Infinity, Infinity], 42 [NaN, NaN], 43 [-2147483648.8, -2147483648], 44 [-2147483649.8, -2147483649], 45 ]; 46 47 var truncITests = [ 48 [0, 0], 49 [4, 4], 50 [-1, -1], 51 [-7, -7], 52 [2147483647, 2147483647], 53 ]; 54 55 // Typed functions to be compiled by Ion. 56 function truncDI(x) { return Math.trunc(x); } 57 function truncDI_bailout(x) { return Math.trunc(x); } 58 function truncD(x) { return Math.trunc(x); } 59 function truncI(x) { return Math.trunc(x); } 60 61 function test() { 62 // Always run this function in the interpreter. 63 with ({}) {} 64 65 for (var i = 0; i < truncDITests.length; i++) 66 assertEq(truncDI(truncDITests[i][0]), truncDITests[i][1]); 67 for (var i = 0; i < truncDITests_bailout.length; i++) 68 assertEq(truncDI_bailout(truncDITests_bailout[i][0]), truncDITests_bailout[i][1]); 69 for (var i = 0; i < truncDTests.length; i++) 70 assertEq(truncD(truncDTests[i][0]), truncDTests[i][1]); 71 for (var i = 0; i < truncITests.length; i++) 72 assertEq(truncI(truncITests[i][0]), truncITests[i][1]); 73 } 74 75 for (var i = 0; i < 40; i++) 76 test();