| //@ runFTLNoCJIT |
| |
| var testCases = [ |
| { value: -Number.MAX_VALUE, expected: 0 }, |
| { value: Number.MAX_VALUE, expected: 0 }, |
| { value: -Number.MIN_VALUE, expected: 0 }, |
| { value: Number.MIN_VALUE, expected: 0 }, |
| { value: -Infinity, expected: 0 }, |
| { value: Infinity, expected: 0 }, |
| { value: NaN, expected: 0 }, |
| { value: -NaN, expected: 0 }, |
| { value: 0, expected: 0 }, |
| { value: -0, expected: 0 }, |
| { value: 1, expected: 1 }, |
| { value: -1, expected: -1 }, |
| { value: 5, expected: 5 }, |
| { value: -5, expected: -5 }, |
| |
| { value: 0x80000001, expected: -2147483647 }, |
| { value: 0x80000000, expected: -2147483648 }, |
| { value: 0x7fffffff, expected: 2147483647 }, |
| { value: 0x7ffffffe, expected: 2147483646 }, |
| |
| { value: -2147483647, expected: -2147483647 }, |
| { value: -2147483648, expected: -2147483648 }, |
| { value: -2147483649, expected: 2147483647 }, |
| { value: -2147483650, expected: 2147483646 }, |
| |
| { value: 2147483646, expected: 2147483646 }, |
| { value: 2147483647, expected: 2147483647 }, |
| { value: 2147483648, expected: -2147483648 }, |
| { value: 2147483649, expected: -2147483647 }, |
| ]; |
| |
| var numFailures = 0; |
| for (var i = 0; i < testCases.length; i++) { |
| try { |
| var testCase = testCases[i]; |
| var test = new Function("x", "y", "y = " + i + "; return x|0;"); |
| noInline(test); |
| |
| for (var k = 0; k < 10000; ++k) { |
| actual = test(testCase.value); |
| if (actual != testCase.expected) |
| throw ("FAILED: x|0 where x = " + testCase.value + ": expected " + testCase.expected + ", actual " + actual); |
| } |
| } catch (e) { |
| print(e); |
| numFailures++; |
| } |
| } |
| |
| if (numFailures) |
| throw("Found " + numFailures + " failures"); |
| |