| Index: test/mjsunit/math-min-max.js
|
| ===================================================================
|
| --- test/mjsunit/math-min-max.js (revision 10404)
|
| +++ test/mjsunit/math-min-max.js (working copy)
|
| @@ -115,3 +115,67 @@
|
|
|
| assertEquals(Infinity, 1/Math.max(ZERO, -0));
|
| assertEquals(Infinity, 1/Math.max(-0, ZERO));
|
| +
|
| +function run(crankshaft_test) {
|
| + crankshaft_test(1);
|
| + crankshaft_test(1);
|
| + %OptimizeFunctionOnNextCall(crankshaft_test);
|
| + crankshaft_test(-0);
|
| +}
|
| +
|
| +function crankshaft_test_1(arg) {
|
| + var v1 = 1;
|
| + var v2 = 5;
|
| + var v3 = 1.5;
|
| + var v4 = 5.5;
|
| + var v5 = 2;
|
| + var v6 = 6;
|
| + var v7 = 0;
|
| + var v8 = -0;
|
| +
|
| + var v9 = 9.9;
|
| + var v0 = 10.1;
|
| + // Integer32 representation.
|
| + assertEquals(v2, Math.max(v1++, v2++));
|
| + assertEquals(v1, Math.min(v1++, v2++));
|
| + // Tagged representation.
|
| + assertEquals(v4, Math.max(v3, v4));
|
| + assertEquals(v3, Math.min(v3, v4));
|
| + assertEquals(v6, Math.max(v5, v6));
|
| + assertEquals(v5, Math.min(v5, v6));
|
| + // Double representation.
|
| + assertEquals(v0, Math.max(v0++, v9++));
|
| + assertEquals(v9, Math.min(v0++, v9++));
|
| + // Minus zero.
|
| + assertEquals(Infinity, 1/Math.max(v7, v8));
|
| + assertEquals(-Infinity, 1/Math.min(v7, v8));
|
| + // NaN.
|
| + assertEquals(NaN, Math.max(NaN, v8));
|
| + assertEquals(NaN, Math.min(NaN, v9));
|
| + assertEquals(NaN, Math.max(v8, NaN));
|
| + assertEquals(NaN, Math.min(v9, NaN));
|
| + // Minus zero as Integer32.
|
| + assertEquals((arg === -0) ? -Infinity : 1, 1/Math.min(arg, v2));
|
| +}
|
| +
|
| +run(crankshaft_test_1);
|
| +
|
| +function crankshaft_test_2() {
|
| + var v9 = {};
|
| + v9.valueOf = function() { return 6; }
|
| + // Deopt expected due to non-heapnumber objects.
|
| + assertEquals(6, Math.min(v9, 12));
|
| +}
|
| +
|
| +run(crankshaft_test_2);
|
| +
|
| +// Test overriding Math.min and Math.max
|
| +Math.min = function(a, b) { return a + b; }
|
| +Math.max = function(a, b) { return a - b; }
|
| +
|
| +function crankshaft_test_3() {
|
| + assertEquals(8, Math.min(3, 5));
|
| + assertEquals(3, Math.max(5, 2));
|
| +}
|
| +
|
| +run(crankshaft_test_3);
|
|
|