~ubuntu-branches/ubuntu/saucy/libv8/saucy

« back to all changes in this revision

Viewing changes to test/mjsunit/math-min-max.js

  • Committer: Package Import Robot
  • Author(s): Jérémy Lal
  • Date: 2012-04-07 16:26:13 UTC
  • mfrom: (15.1.27 sid)
  • Revision ID: package-import@ubuntu.com-20120407162613-dqo1m6w9r3fh8tst
Tags: 3.8.9.16-3
* mipsel build fixes :
  + v8_use_mips_abi_hardfloat=false, this lowers EABI requirements.
  + v8_can_use_fpu_instructions=false, detect if FPU is present.
  + set -Wno-unused-but-set-variable only on mipsel.

Show diffs side-by-side

added added

removed removed

Lines of Context:
115
115
 
116
116
assertEquals(Infinity, 1/Math.max(ZERO, -0));
117
117
assertEquals(Infinity, 1/Math.max(-0, ZERO));
 
118
 
 
119
function run(crankshaft_test) {
 
120
  crankshaft_test(1);
 
121
  crankshaft_test(1);
 
122
  %OptimizeFunctionOnNextCall(crankshaft_test);
 
123
  crankshaft_test(-0);
 
124
}
 
125
 
 
126
function crankshaft_test_1(arg) {
 
127
  var v1 = 1;
 
128
  var v2 = 5;
 
129
  var v3 = 1.5;
 
130
  var v4 = 5.5;
 
131
  var v5 = 2;
 
132
  var v6 = 6;
 
133
  var v7 = 0;
 
134
  var v8 = -0;
 
135
 
 
136
  var v9 = 9.9;
 
137
  var v0 = 10.1;
 
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++));
 
149
  // Minus zero.
 
150
  assertEquals(Infinity, 1/Math.max(v7, v8));
 
151
  assertEquals(-Infinity, 1/Math.min(v7, v8));
 
152
  // NaN.
 
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));
 
159
}
 
160
 
 
161
run(crankshaft_test_1);
 
162
 
 
163
function crankshaft_test_2() {
 
164
  var v9 = {};
 
165
  v9.valueOf = function() { return 6; }
 
166
  // Deopt expected due to non-heapnumber objects.
 
167
  assertEquals(6, Math.min(v9, 12));
 
168
}
 
169
 
 
170
run(crankshaft_test_2);
 
171
 
 
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; }
 
175
 
 
176
function crankshaft_test_3() {
 
177
  assertEquals(8, Math.min(3, 5));
 
178
  assertEquals(3, Math.max(5, 2));
 
179
}
 
180
 
 
181
run(crankshaft_test_3);