116
116
assertEquals(Infinity, 1/Math.max(ZERO, -0));
117
117
assertEquals(Infinity, 1/Math.max(-0, ZERO));
119
function run(crankshaft_test) {
122
%OptimizeFunctionOnNextCall(crankshaft_test);
126
function crankshaft_test_1(arg) {
138
// Integer32 representation.
139
assertEquals(v2, Math.max(v1++, v2++));
140
assertEquals(v1, Math.min(v1++, v2++));
141
// Tagged representation.
142
assertEquals(v4, Math.max(v3, v4));
143
assertEquals(v3, Math.min(v3, v4));
144
assertEquals(v6, Math.max(v5, v6));
145
assertEquals(v5, Math.min(v5, v6));
146
// Double representation.
147
assertEquals(v0, Math.max(v0++, v9++));
148
assertEquals(v9, Math.min(v0++, v9++));
150
assertEquals(Infinity, 1/Math.max(v7, v8));
151
assertEquals(-Infinity, 1/Math.min(v7, v8));
153
assertEquals(NaN, Math.max(NaN, v8));
154
assertEquals(NaN, Math.min(NaN, v9));
155
assertEquals(NaN, Math.max(v8, NaN));
156
assertEquals(NaN, Math.min(v9, NaN));
157
// Minus zero as Integer32.
158
assertEquals((arg === -0) ? -Infinity : 1, 1/Math.min(arg, v2));
161
run(crankshaft_test_1);
163
function crankshaft_test_2() {
165
v9.valueOf = function() { return 6; }
166
// Deopt expected due to non-heapnumber objects.
167
assertEquals(6, Math.min(v9, 12));
170
run(crankshaft_test_2);
172
// Test overriding Math.min and Math.max
173
Math.min = function(a, b) { return a + b; }
174
Math.max = function(a, b) { return a - b; }
176
function crankshaft_test_3() {
177
assertEquals(8, Math.min(3, 5));
178
assertEquals(3, Math.max(5, 2));
181
run(crankshaft_test_3);