tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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();