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