summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/testBug504520Harder.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/basic/testBug504520Harder.js')
-rw-r--r--js/src/jit-test/tests/basic/testBug504520Harder.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/testBug504520Harder.js b/js/src/jit-test/tests/basic/testBug504520Harder.js
new file mode 100644
index 0000000000..9a08193195
--- /dev/null
+++ b/js/src/jit-test/tests/basic/testBug504520Harder.js
@@ -0,0 +1,33 @@
+function testBug504520Harder() {
+ // test 1024 similar cases
+ var vals = [1/0, -1/0, 0, 0/0];
+ var ops = ["===", "!==", "==", "!=", "<", ">", "<=", ">="];
+ for (var x of vals) {
+ for (var y of vals) {
+ for (var op of ops) {
+ for (var z of vals) {
+ // Assume eval is correct. This depends on the global
+ // Infinity property not having been reassigned.
+ var xz = eval(x + op + z);
+ var yz = eval(y + op + z);
+
+ var arr = [x, x, x, x, x, x, x, x, x, y];
+ assertEq(arr.length > 9, true);
+ var expected = [xz, xz, xz, xz, xz, xz, xz, xz, xz, yz];
+
+ // ?: looks superfluous but that's what we're testing here
+ var fun = eval(
+ '(function (arr, results) {\n' +
+ ' for (let i = 0; i < arr.length; i++)\n' +
+ ' results.push(arr[i]' + op + z + ' ? "true" : "false");\n' +
+ '});\n');
+ var actual = [];
+ fun(arr, actual);
+ print(x, y, op, z);
+ assertEq("" + actual, "" + expected);
+ }
+ }
+ }
+ }
+}
+testBug504520Harder();