compare.js (15954B)
1 setJitCompilerOption('ion.forceinlineCaches', 1); 2 3 function warmup(fun, input_array) { 4 for (var index = 0; index < input_array.length; index++) { 5 input = input_array[index]; 6 input_lhs = input[0]; 7 input_rhs = input[1]; 8 output = input[2]; 9 for (var i = 0; i < 30; i++) { 10 var str = ""; 11 var y = fun(input_lhs, input_rhs); 12 if (y != output) { 13 str = "Computed: "+y+ ", expected: "+ output + " ( " + fun + " lhs: "+ input_lhs + " rhs: " + input_rhs +")"; 14 } 15 assertEq(str, ""); 16 } 17 } 18 } 19 20 21 // Int32 + Int32 22 var Int32Int32Fun_GT1 = (a, b) => { return a > b; } 23 warmup(Int32Int32Fun_GT1, [[1,2, false], [1,1, false], [3,4, false], [4294967295, 2, true], 24 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10, undefined, false]]); 25 26 var Int32Int32Fun_GTE1 = (a, b) => { return a >= b; } 27 warmup(Int32Int32Fun_GTE1, [[1,2, false], [1,1, true], [3,4, false], [4294967295, 2, true], 28 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10, undefined, false]]); 29 30 var Int32Int32Fun_LT1 = (a, b) => { return a < b; } 31 warmup(Int32Int32Fun_LT1, [[1,2, true], [1,1, false], [3,4, true], [4294967295, 2, false], 32 [NaN, 2, false],[-1000, NaN, false], [NaN, NaN, false], [10, undefined, false]]); 33 34 var Int32Int32Fun_LTE1 = (a, b) => { return a <= b; } 35 warmup(Int32Int32Fun_LTE1, [[1,2, true], [1,1, true], [3,4, true], [4294967295, 2, false], 36 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10, undefined, false]]); 37 38 var Int32Int32Fun_EQ1 = (a, b) => { return a == b; } 39 warmup(Int32Int32Fun_EQ1, [[1,2, false], [1,1, true], [3,4, false], [4294967295, 2, false], 40 [NaN, 2, false], [-1000, NaN, false], [undefined, null, true], 41 ['0', 0, true], [new String('0'), 0, true], [10, undefined, false]]); 42 43 var Int32Int32Fun_EQ2 = (a, b) => { return a == b; } 44 warmup(Int32Int32Fun_EQ2, [[1, NaN, false], [1, undefined, false], [1, null, false]]); 45 46 var Int32Int32Fun_EQ3 = (a, b) => { return a == b; } 47 warmup(Int32Int32Fun_EQ3, [[{a: 1}, NaN, false], [{a: 1}, undefined, false], [{a: 1}, null, false]]); 48 49 var Int32Int32Fun_EQ4 = (a, b) => { return a == b; } 50 warmup(Int32Int32Fun_EQ4, [[undefined, undefined, true], [null, null, true], [null, undefined, true], [undefined, null, true]]); 51 52 53 var Int32Int32Fun_NEQ1 = (a, b) => { return a != b; } 54 warmup(Int32Int32Fun_NEQ1, [[1,2, true], [1,1, false], [3,4, true], [4294967295, 2, true], 55 [NaN, 2, true], [-1000, NaN, true], [undefined, null, false], 56 ['0', 0, false], [new String('0'), 0, false], [10, undefined, true]]); 57 58 var Int32Int32Fun_NEQ2 = (a, b) => { return a != b; } 59 warmup(Int32Int32Fun_NEQ2, [[1, NaN, true], [1, undefined, true], [1, null, true]]); 60 61 var Int32Int32Fun_NEQ3 = (a, b) => { return a != b; } 62 warmup(Int32Int32Fun_NEQ3, [[{a: 1}, NaN, true], [{a: 1}, undefined, true], [{a: 1}, null, true]]); 63 64 var Int32Int32Fun_NEQ4 = (a, b) => { return a != b; } 65 warmup(Int32Int32Fun_NEQ4, [[undefined, undefined, false], [null, null, false], [null, undefined, false], [undefined, null, false]]); 66 67 var Int32Int32Fun_SEQ1 = (a, b) => { return a === b; } 68 warmup(Int32Int32Fun_SEQ1, [[1,2, false], [1,1, true], [3,4, false], [4294967295, 2, false], 69 [NaN, 2, false], [-1000, NaN, false], [undefined, null, false], 70 ['0', 0, false], [new String('0'), 0, false], [10, undefined, false]]); 71 72 var Int32Int32Fun_SEQ2 = (a, b) => { return a === b; } 73 warmup(Int32Int32Fun_SEQ2, [[1, NaN, false], [1, undefined, false], [1, null, false]]); 74 75 var Int32Int32Fun_SEQ3 = (a, b) => { return a === b; } 76 warmup(Int32Int32Fun_SEQ3, [[{a: 1}, NaN, false], [{a: 1}, undefined, false], [{a: 1}, null, false]]); 77 78 var Int32Int32Fun_SEQ4 = (a, b) => { return a === b; } 79 warmup(Int32Int32Fun_SEQ4, [[undefined, undefined, true], [null, null, true], [null, undefined, false], [undefined, null, false] ]); 80 81 var Int32Int32Fun_SEQ5 = (a, b) => { return a === b; } 82 warmup(Int32Int32Fun_SEQ5, [[1, true, false], [1, false, false], [false, 1, false], [true, 0, false], [true, true, true]]); 83 84 var Int32Int32Fun_SNEQ1 = (a, b) => { return a !== b; } 85 warmup(Int32Int32Fun_SNEQ1, [[1,2, true], [1,1, false], [3,4, true], [4294967295, 2, true], 86 [NaN, 2, true], [-1000, NaN, true], [undefined, null, true], 87 ['0', 0, true], [new String('0'), 0, true], [10, undefined, true]]); 88 89 var Int32Int32Fun_SNEQ2 = (a, b) => { return a !== b; } 90 warmup(Int32Int32Fun_SNEQ2, [[1, NaN, true], [1, undefined, true], [1, null, true]]); 91 92 var Int32Int32Fun_SNEQ3 = (a, b) => { return a !== b; } 93 warmup(Int32Int32Fun_SNEQ3, [[{a: 1}, NaN, true], [{a: 1}, undefined, true], [{a: 1}, null, true]]); 94 95 var Int32Int32Fun_SNEQ4 = (a, b) => { return a !== b; } 96 warmup(Int32Int32Fun_SNEQ4, [[undefined, undefined, false], [null, null, false], [null, undefined, true], [undefined, null, true] ]); 97 98 var Int32Int32Fun_SNEQ5 = (a, b) => { return a !== b; } 99 warmup(Int32Int32Fun_SNEQ5, [[1, true, true], [1, false, true], [false, 1, true], [true, 0, true]]); 100 101 102 // Number Number 103 var NumberNumberFun_GT1 = (a, b) => { return a > b; } 104 warmup(NumberNumberFun_GT1, [[1,2, false], [1.3, 2, false], [1, 2.6, false], [1.2,2.2, false], 105 [1,1, false], [3,4, false], [4294967295, 2, true], 106 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10.2, undefined, false]]); 107 108 var NumberNumberFun_GTE1 = (a, b) => { return a >= b; } 109 warmup(NumberNumberFun_GTE1, [[1,2, false], [1.3, 2, false], [1, 2.6, false], [1.2,2.2, false], 110 [1,1, true], [3,4, false], [4294967295, 2, true], 111 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10.2, undefined, false]]); 112 113 var NumberNumberFun_LT1 = (a, b) => { return a < b; } 114 warmup(NumberNumberFun_LT1, [[1,2, true], [1.3, 2, true], [1, 2.6, true], [1.2,2.2, true], 115 [1,1, false], [3,4, true], [4294967295, 2, false], 116 [NaN, 2, false],[-1000, NaN, false], [NaN, NaN, false, [10.2, undefined, false]]]); 117 118 var NumberNumberFun_LTE1 = (a, b) => { return a <= b; } 119 warmup(NumberNumberFun_LTE1, [[1,2, true], [1.3, 2, true], [1, 2.6, true], [1.2,2.2, true], 120 [1,1, true], [3,4, true], [4294967295, 2, false], 121 [NaN, 2, false], [-1000, NaN, false], [NaN, NaN, false], [10.2, undefined, false]]); 122 123 var NumberNumberFun_EQ1 = (a, b) => { return a == b; } 124 warmup(NumberNumberFun_EQ1, [[1,2, false], [1.3, 2, false], [1, 2.6, false], [1.2,2.2, false], 125 [1,1, true], [3,4, false], [4294967295, 2, false], 126 [NaN, 2, false], [-1000, NaN, false], [undefined, null, true], 127 ['0', 0, true], [new String('0'), 0, true], [10.2, undefined, false]]); 128 129 var NumberNumberFun_NEQ1 = (a, b) => { return a != b; } 130 warmup(NumberNumberFun_NEQ1, [[1,2, true], [1.3, 2, true], [1, 2.6, true], [1.2,2.2, true], 131 [1,1, false], [3,4, true], [4294967295, 2, true], 132 [NaN, 2, true], [-1000, NaN, true], [undefined, null, false], 133 ['0', 0, false], [new String('0'), 0, false], [10.2, undefined, true]]); 134 135 var NumberNumberFun_SEQ1 = (a, b) => { return a === b; } 136 warmup(NumberNumberFun_SEQ1, [[1,2, false], [1.3, 2, false], [1, 2.6, false], [1.2,2.2, false], 137 [1,1, true], [3,4, false], [4294967295, 2, false], 138 [NaN, 2, false], [-1000, NaN, false], [undefined, null, false], 139 ['0', 0, false], [new String('0'), 0, false], [10.2, undefined, false]]); 140 141 var NumberNumberFun_SNEQ1 = (a, b) => { return a !== b; } 142 warmup(NumberNumberFun_SNEQ1, [[1,2, true], [1.3, 2, true], [1, 2.6, true], [1.2,2.2, true], 143 [1,1, false], [3,4, true], [4294967295, 2, true], 144 [NaN, 2, true], [-1000, NaN, true], [undefined, null, true], 145 ['0', 0, true], [new String('0'), 0, true], [10.2, undefined, true]]); 146 147 // Boolean + Int32 148 var BooleanFun_GT1 = (a, b) => { return a > b; } 149 warmup(BooleanFun_GT1, [[1,2, false], [true, 2, false], [1,1, false], [true,true, false], [3,4, false], ]); 150 151 var BooleanFun_GTE1 = (a, b) => { return a >= b; } 152 warmup(BooleanFun_GTE1, [[1,2, false], [true, 2, false], [1,1, true], [true,true, true], [3,4, false]]); 153 154 var BooleanFun_LT1 = (a, b) => { return a < b; } 155 warmup(BooleanFun_LT1, [[1,2, true], [true, 2, true], [1,1, false], [true,true, false], [3,4, true]]); 156 157 var BooleanFun_LTE1 = (a, b) => { return a <= b; } 158 warmup(BooleanFun_LTE1, [[1,2, true], [true, 2, true], [1,1, true], [true,true, true], [3,4, true]]); 159 160 var BooleanFun_EQ1 = (a, b) => { return a == b; } 161 warmup(BooleanFun_EQ1, [[1,2, false], [true, 2, false], [1,1, true], [true,true, true], [3,4, false], 162 ['0', 0, true], [new String('0'), 0, true], [10, undefined, false]]); 163 164 var BooleanFun_NEQ1 = (a, b) => { return a != b; } 165 warmup(BooleanFun_NEQ1, [[1,2, true], [true, 2, true], [1,1, false], [true,true, false], [3,4, true], 166 ['0', 0, false], [new String('0'), 0, false], [10, undefined, true]]); 167 168 var BooleanFun_SEQ1 = (a, b) => { return a === b; } 169 warmup(BooleanFun_SEQ1, [[1,2, false], [true, 2, false], [1,1, true], [true,true, true], [3,4, false]]); 170 171 var BooleanFun_SNEQ1 = (a, b) => { return a !== b; } 172 warmup(BooleanFun_SNEQ1, [[1,2, true], [true, 2, true], [1,1, false], [true,true, false], [3,4, true]]); 173 174 // Undefined / Null equality. 175 var UndefNull_EQ1 = (a, b) => { return a == b; } 176 warmup(UndefNull_EQ1, [[undefined, null, true], [undefined, undefined, true], [null, undefined, true], 177 [null, null, true], [{a: 10}, undefined, false], [{a: 10}, null, false]]); 178 179 var UndefNull_NEQ1 = (a, b) => { return a != b; } 180 warmup(UndefNull_NEQ1, [[undefined, null, false], [undefined, undefined, false], [null, undefined, false], 181 [null, null, false], [{a: 10}, undefined, true], [{a: 10}, null, true]]); 182 183 var UndefNull_SEQ1 = (a, b) => { return a === b; } 184 warmup(UndefNull_SEQ1, [[undefined, null, false], [undefined, undefined, true], [null, undefined, false], 185 [null, null, true], [{a: 10}, undefined, false], [{a: 10}, null, false]]); 186 187 var UndefNull_SNEQ1 = (a, b) => { return a !== b; } 188 warmup(UndefNull_SNEQ1, [[undefined, null, true], [undefined, undefined, false], [null, undefined, true], 189 [null, null, false], [{a: 10}, undefined, true], [{a: 10}, null, true]]); 190 191 var typeDifference = function(a,b) { return a === b; } 192 warmup(typeDifference, [[1,1, true], [3,3, true], [3, typeDifference, false],[typeDifference, {}, false], 193 [3.2, 1, false], [0, -0, true]]); 194 195 // String + Number 196 var String_Number_GT1 = (a, b) => { return a > b; } 197 warmup(String_Number_GT1, [["1.4",2, false], [1,"1", false], ["3",4, false], 198 [-1024, "-1023", false], [1.3, "1.2", true]]); 199 200 var String_Number_GTE1 = (a, b) => { return a >= b; } 201 warmup(String_Number_GTE1, [["1.4",2, false], [1,"1", true], [3,"4", false], 202 [-1024, "-1023", false], [1.2, "1.2", true]]); 203 204 var String_Number_LT1 = (a, b) => { return a < b; } 205 warmup(String_Number_LT1, [["1.4",2, true], ["1",1, false], [3,"4", true], 206 [-1024, "-1023", true], [1.2, "1.2", false]]); 207 208 var String_Number_LTE1 = (a, b) => { return a <= b; } 209 warmup(String_Number_LTE1, [["1.4",2, true], ["1",1, true], [3,"4", true], 210 [-1024, "-1023", true], [1.2, "1.2", true]]); 211 212 var String_Number_EQ1 = (a, b) => { return a == b; } 213 warmup(String_Number_EQ1, [["1.4",2, false], ["1",1, true], [3,"4", false], 214 [-1024, "-1023", false], [1.2, "1.2", true]]); 215 216 var String_Number_NEQ1 = (a, b) => { return a != b; } 217 warmup(String_Number_NEQ1, [["1.4",2, true], ["1",1, false], [3,"4", true], 218 [-1024, "-1023", true], [1.2, "1.2", false]]); 219 220 var String_Number_SEQ1 = (a, b) => { return a === b; } 221 warmup(String_Number_SEQ1, [["1.4",2, false], ["1",1, false], [3,"4", false], 222 [-1024, "-1023", false], [1.2, "1.2", false]]); 223 224 var String_Number_SNEQ1 = (a, b) => { return a !== b; } 225 warmup(String_Number_SNEQ1, [["1.4",2, true], ["1",1, true], [3,"4", true], 226 [-1024, "-1023", true], [1.2, "1.2", true]]); 227 228 // String + String 229 var String_String_GT1 = (a, b) => a > b; 230 warmup(String_String_GT1, [["", "", false], ["a", "a", false], ["aa", "aa", false], 231 ["a", "", true], ["", "a", false], 232 ["a", "b", false], ["b", "a", true], 233 ["a", "ab", false], ["ab", "a", true], 234 ]); 235 236 var String_String_GE1 = (a, b) => a >= b; 237 warmup(String_String_GE1, [["", "", true], ["a", "a", true], ["aa", "aa", true], 238 ["a", "", true], ["", "a", false], 239 ["a", "b", false], ["b", "a", true], 240 ["a", "ab", false], ["ab", "a", true], 241 ]); 242 243 var String_String_LT1 = (a, b) => a < b; 244 warmup(String_String_LT1, [["", "", false], ["a", "a", false], ["aa", "aa", false], 245 ["a", "", false], ["", "a", true], 246 ["a", "b", true], ["b", "a", false], 247 ["a", "ab", true], ["ab", "a", false], 248 ]); 249 250 var String_String_LE1 = (a, b) => a <= b; 251 warmup(String_String_LE1, [["", "", true], ["a", "a", true], ["aa", "aa", true], 252 ["a", "", false], ["", "a", true], 253 ["a", "b", true], ["b", "a", false], 254 ["a", "ab", true], ["ab", "a", false], 255 ]); 256 257 var String_String_EQ1 = (a, b) => a == b; 258 warmup(String_String_EQ1, [["", "", true], ["a", "a", true], ["aa", "aa", true], 259 ["a", "", false], ["", "a", false], 260 ["a", "b", false], ["b", "a", false], 261 ["a", "ab", false], ["ab", "a", false], 262 ]); 263 264 var String_String_SEQ1 = (a, b) => a === b; 265 warmup(String_String_SEQ1, [["", "", true], ["a", "a", true], ["aa", "aa", true], 266 ["a", "", false], ["", "a", false], 267 ["a", "b", false], ["b", "a", false], 268 ["a", "ab", false], ["ab", "a", false], 269 ]); 270 271 var String_String_NE1 = (a, b) => a != b; 272 warmup(String_String_NE1, [["", "", false], ["a", "a", false], ["aa", "aa", false], 273 ["a", "", true], ["", "a", true], 274 ["a", "b", true], ["b", "a", true], 275 ["a", "ab", true], ["ab", "a", true], 276 ]); 277 278 var String_String_SNE1 = (a, b) => a !== b; 279 warmup(String_String_SNE1, [["", "", false], ["a", "a", false], ["aa", "aa", false], 280 ["a", "", true], ["", "a", true], 281 ["a", "b", true], ["b", "a", true], 282 ["a", "ab", true], ["ab", "a", true], 283 ]); 284 285 // IsHTMLDDA internal slot 286 // https://tc39.github.io/ecma262/#sec-IsHTMLDDA-internal-slot 287 var IsHTMLDDA_EQ1 = (a, b) => a == b; 288 warmup(IsHTMLDDA_EQ1, [[createIsHTMLDDA(), null, true], 289 [createIsHTMLDDA(), undefined, true], 290 [null, createIsHTMLDDA(), true], 291 [undefined, createIsHTMLDDA(), true], 292 ]);