summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/array-sort.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/array-sort.js')
-rw-r--r--deps/v8/test/mjsunit/array-sort.js63
1 files changed, 17 insertions, 46 deletions
diff --git a/deps/v8/test/mjsunit/array-sort.js b/deps/v8/test/mjsunit/array-sort.js
index fd18a5b2d..7060c5f36 100644
--- a/deps/v8/test/mjsunit/array-sort.js
+++ b/deps/v8/test/mjsunit/array-sort.js
@@ -70,59 +70,30 @@ function TestNumberSort() {
a.sort();
assertArrayEquals([-1000000000, -10000000000, -1000000001, 1000000000, 10000000000, 1000000001], a);
- // Other cases are tested implicitly in TestSmiLexicographicCompare.
-}
-
-TestNumberSort();
-
-function TestSmiLexicographicCompare() {
-
- assertFalse(%_IsSmi(2147483648), 'Update test for >32 bit Smi');
- // Collect a list of interesting Smis.
- var seen = {};
- var smis = [];
- function add(x) {
- if (x | 0 == x) {
- x = x | 0; // Canonicalizes to Smi if 32-bit signed and fits in Smi.
- }
- if (%_IsSmi(x) && !seen[x]) {
- seen[x] = 1;
- smis.push(x);
- }
- }
- function addSigned(x) {
- add(x);
- add(-x);
- }
-
- var BIGGER_THAN_ANY_SMI = 10 * 1000 * 1000 * 1000;
- for (var xb = 1; xb <= BIGGER_THAN_ANY_SMI; xb *= 10) {
+ for (var xb = 1; xb <= 1000 * 1000 * 1000; xb *= 10) {
for (var xf = 0; xf <= 9; xf++) {
for (var xo = -1; xo <= 1; xo++) {
- addSigned(xb * xf + xo);
+ for (var yb = 1; yb <= 1000 * 1000 * 1000; yb *= 10) {
+ for (var yf = 0; yf <= 9; yf++) {
+ for (var yo = -1; yo <= 1; yo++) {
+ var x = xb * xf + xo;
+ var y = yb * yf + yo;
+ if (!%_IsSmi(x)) continue;
+ if (!%_IsSmi(y)) continue;
+ var lex = %SmiLexicographicCompare(x, y);
+ if (lex < 0) lex = -1;
+ if (lex > 0) lex = 1;
+ assertEquals(lex, (x == y) ? 0 : ((x + "") < (y + "") ? -1 : 1), x + " < " + y);
+ }
+ }
+ }
}
}
}
-
- for (var yb = 1; yb <= BIGGER_THAN_ANY_SMI; yb *= 2) {
- for (var yo = -2; yo <= 2; yo++) {
- addSigned(yb + yo);
- }
- }
-
- for (var i = 0; i < smis.length; i++) {
- for (var j = 0; j < smis.length; j++) {
- var x = smis[i];
- var y = smis[j];
- var lex = %SmiLexicographicCompare(x, y);
- var expected = (x == y) ? 0 : ((x + "") < (y + "") ? -1 : 1);
- assertEquals(lex, expected, x + " < " + y);
- }
- }
}
-TestSmiLexicographicCompare();
+TestNumberSort();
// Test lexicographical string sorting.
@@ -403,4 +374,4 @@ function cmpTest(a, b) {
assertTrue(b instanceof o);
return a.val - b.val;
}
-arr.sort(cmpTest);
+arr.sort(cmpTest); \ No newline at end of file