tor-browser

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

mathSign.js (1795B)


      1 // Test Math.sign() for IonMonkey.
      2 // Requires --ion-eager to enter at the top of each loop.
      3 
      4 var signDITests = [
      5    [0.49999999999999997, 1],
      6    [0.5, 1],
      7    [1.0, 1],
      8    [1.5, 1],
      9    [792.8, 1],
     10    [-0.1, -1],
     11    [-1.0001, -1],
     12    [-3.14, -1],
     13    [900000000000, 1],
     14    [+0, +0],
     15    [-Infinity, -1],
     16    [Infinity, 1],
     17 ];
     18 
     19 var signDITests_bailout = [
     20    // Add a few 'double -> int' tests before the bailout.
     21    ...(function*(){ for (var i = 0; i < 50; ++i) yield* signDITests; })(),
     22 
     23    // Trigger bailout for negative zero.
     24    [-0, -0],
     25 ];
     26 
     27 var signDTests = [
     28    [-0, -0],
     29    [0.49999999999999997, 1],
     30    [0.5, 1],
     31    [1.0, 1],
     32    [1.5, 1],
     33    [792.8, 1],
     34    [-0.1, -1],
     35    [-1.0001, -1],
     36    [-3.14, -1],
     37    [900000000000, 1],
     38    [-0, -0],
     39    [+0, +0],
     40    [-Infinity, -1],
     41    [Infinity, 1],
     42    [NaN, NaN],
     43 ];
     44 
     45 var signITests = [
     46    [0, 0],
     47    [4, 1],
     48    [-1, -1],
     49    [-7, -1],
     50    [2147483647, 1],
     51    [-2147483648, -1],
     52 ];
     53 
     54 // Typed functions to be compiled by Ion.
     55 function signDI(x) { return Math.sign(x); }
     56 function signDI_bailout(x) { return Math.sign(x); }
     57 function signD(x) { return Math.sign(x); }
     58 function signI(x) { return Math.sign(x); }
     59 
     60 function test() {
     61    // Always run this function in the interpreter.
     62    with ({}) {}
     63 
     64    for (var i = 0; i < signDITests.length; i++)
     65        assertEq(signDI(signDITests[i][0]), signDITests[i][1]);
     66    for (var i = 0; i < signDITests_bailout.length; i++)
     67        assertEq(signDI_bailout(signDITests_bailout[i][0]), signDITests_bailout[i][1]);
     68    for (var i = 0; i < signDTests.length; i++)
     69        assertEq(signD(signDTests[i][0]), signDTests[i][1]);
     70    for (var i = 0; i < signITests.length; i++)
     71        assertEq(signI(signITests[i][0]), signITests[i][1]);
     72 }
     73 
     74 for (var i = 0; i < 40; i++)
     75    test();