Commit dee044d6 authored by titzer's avatar titzer Committed by Commit bot

Add more exhaustive tests for Math.min and Math.max.

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1078073002

Cr-Commit-Position: refs/heads/master@{#27747}
parent 7667d19e
......@@ -127,6 +127,10 @@
'debug-stepout-scope-part3': [PASS, NO_VARIANTS],
'es6/debug-evaluate-blockscopes': [PASS, NO_VARIANTS],
# TODO(titzer): --always-opt incorrectly disables CrankShaft soft deopt points
'result-table-min': [PASS, NO_VARIANTS],
'result-table-max': [PASS, NO_VARIANTS],
##############################################################################
# Too slow in debug mode with --stress-opt mode.
'compiler/regress-stacktrace-methods': [PASS, ['mode == debug', SKIP]],
......
This diff is collapsed.
This diff is collapsed.
// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Generates a comparison table test case.
// Usage: d8 compare-table-gen.js -- lt|lteq|gt|gteq|eq|ne|eq|sne
// Usage: d8 compare-table-gen.js -- lt|lteq|gt|gteq|eq|ne|eq|sne|min|max
var strings = ["true", "false", "null", "void 0", "0", "0.0", "-0", "\"\"", "-1", "-1.25", "1", "1.25", "-2147483648", "2147483648", "Infinity", "-Infinity", "NaN"];
var values = new Array(strings.length);
......@@ -27,7 +31,16 @@ function test() {
}
}
function gen(name, cmp) {
function expr(infix, a, cmp, b) {
return infix ? a + " " + cmp + " " + b : cmp + "(" + a + ", " + b + ")";
}
function SpecialToString(x) {
if ((1 / x) == -Infinity) return "-0";
return "" + x;
}
function gen(name, cmp, infix) {
print("// Copyright 2015 the V8 project authors. All rights reserved.");
print("// Use of this source code is governed by a BSD-style license that can be");
......@@ -35,7 +48,7 @@ function gen(name, cmp) {
print();
print("var values = [" + strings + "];");
var body = "(function " + name + "(a,b) { return a " + cmp + " b; })";
var body = "(function " + name + "(a,b) { return " + expr(infix, "a", cmp, "b") + "; })";
var func = eval(body);
print("var expected = [");
......@@ -44,7 +57,7 @@ function gen(name, cmp) {
var line = " [";
for (var j = 0; j < values.length; j++) {
if (j > 0) line += ",";
line += func(values[i], values[j]) ? "true " : "false";
line += SpecialToString(func(values[i], values[j]));
}
line += "]";
if (i < (values.length - 1)) line += ",";
......@@ -57,7 +70,7 @@ function gen(name, cmp) {
for (var i = 0; i < values.length; i++) {
var value = strings[i];
var body = "(function " + name + "_L" + i + "(b) { return " + value + " " + cmp + " b; })";
var body = "(function " + name + "_L" + i + "(b) { return " + expr(infix, value, cmp, "b") + "; })";
var end = i < (values.length - 1) ? "," : "";
print(" " + body + end);
}
......@@ -66,7 +79,7 @@ function gen(name, cmp) {
print("var right_funcs = [");
for (var i = 0; i < values.length; i++) {
var value = strings[i];
var body = "(function " + name + "_R" + i + "(a) { return a " + cmp + " " + value + "; })";
var body = "(function " + name + "_R" + i + "(a) { return " + expr(infix, "a", cmp, value) + "; })";
var end = i < (values.length - 1) ? "," : "";
print(" " + body + end);
}
......@@ -78,7 +91,7 @@ function gen(name, cmp) {
var line = " [";
for (var j = 0; j < values.length; j++) {
if (j > 0) line += ",";
line += strings[i] + " " + cmp + " " + strings[j];
line += expr(infix, strings[i], cmp, strings[j]);
}
line += "]";
if (i < (values.length - 1)) line += ",";
......@@ -91,18 +104,17 @@ function gen(name, cmp) {
print(test.toString());
print("test();");
print("test();");
print();
print();
}
switch (arguments[0]) {
case "lt": gen("lt", "<"); break;
case "lteq": gen("lteq", "<="); break;
case "gt": gen("gt", ">"); break;
case "gteq": gen("gteq", ">="); break;
case "eq": gen("eq", "=="); break;
case "ne": gen("ne", "!="); break;
case "seq": gen("seq", "==="); break;
case "sne": gen("sne", "!=="); break;
case "lt": gen("lt", "<", true); break;
case "lteq": gen("lteq", "<=", true); break;
case "gt": gen("gt", ">", true); break;
case "gteq": gen("gteq", ">=", true); break;
case "eq": gen("eq", "==", true); break;
case "ne": gen("ne", "!=", true); break;
case "seq": gen("seq", "===", true); break;
case "sne": gen("sne", "!==", true); break;
case "min": gen("min", "Math.min", false); break;
case "max": gen("max", "Math.max", false); break;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment