tor-browser

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

unaryarith.js (2217B)


      1 setJitCompilerOption('ion.forceinlineCaches', 1);
      2 
      3 function warmup(fun, input_array, output_array) {
      4    assertEq(output_array.length, input_array.length);
      5    for (var index = 0; index < input_array.length; index++) {
      6        input = input_array[index];
      7        output = output_array[index];
      8        for (var i = 0; i < 30; i++) {
      9            var y = fun(input);
     10            assertEq(y, output)
     11        }
     12    }
     13 }
     14 
     15 // Unary - operator with transition between int32 and double.
     16 var fun_neg_int32_double = (x) => { return -x; }
     17 var fun_neg_double_int32 = (x) => { return -x; }
     18 
     19 // Unary ~ operator using either int32, double, null, or undefined.
     20 var fun_bitnot_int32 = (x) => { return ~x; }
     21 var fun_bitnot_double = (x) => { return ~x; }
     22 var fun_bitnot_null = (x) => { return ~x; }
     23 var fun_bitnot_undefined = (x) => { return ~x; }
     24 
     25 // Unary ++ operator using either int32 or double.
     26 var fun_inc_int32 = (x) => { return ++x; }
     27 var fun_inc_double = (x) => { return ++x; }
     28 
     29 // Unary -- operator using either int32 or double.
     30 var fun_dec_int32 = (x) => { return --x; }
     31 var fun_dec_double = (x) => { return --x; }
     32 
     33 // Unary + operator using either int32 or double.
     34 var fun_pos_int32 = (x) => { return +x; }
     35 var fun_pos_double = (x) => { return +x; }
     36 
     37 // JSOp::ToNumeric using either int32 or double.
     38 var fun_tonumeric_int32 = (x) => { return x++; }
     39 var fun_tonumeric_double = (x) => { return x++; }
     40 
     41 warmup(fun_neg_int32_double, [1, 2], [-1, -2]);
     42 warmup(fun_neg_double_int32, [0], [-0]);
     43 
     44 warmup(fun_neg_double_int32, [3, 4], [-3, -4]);
     45 warmup(fun_neg_int32_double, [1.2, 1.4], [-1.2, -1.4]);
     46 
     47 warmup(fun_bitnot_int32, [-1, 0], [0, -1]);
     48 warmup(fun_bitnot_double, [-1.0, 0.0, 1.2, 3], [0, -1, -2, -4]);
     49 warmup(fun_bitnot_null, [null], [-1]);
     50 warmup(fun_bitnot_undefined, [void 0], [-1]);
     51 
     52 warmup(fun_inc_int32, [-1, 0], [0, 1]);
     53 warmup(fun_inc_double, [-1.0, 0.0, 1.2, 3], [0, 1, 2.2, 4]);
     54 
     55 warmup(fun_dec_int32, [-1, 0], [-2, -1]);
     56 warmup(fun_dec_double, [-1.0, 0.0, 1.5, 3], [-2, -1, 0.5, 2]);
     57 
     58 warmup(fun_pos_int32, [-1, 0], [-1, 0]);
     59 warmup(fun_pos_double, [-1.0, 0.0, 1.2, 3], [-1.0, 0.0, 1.2, 3]);
     60 
     61 warmup(fun_tonumeric_int32, [-1, 0], [-1, 0]);
     62 warmup(fun_tonumeric_double, [-1.0, 0.0, 1.2, 3], [-1.0, 0.0, 1.2, 3]);