Index: test/mjsunit/regress/regress-2596.js |
diff --git a/test/mjsunit/compiler/regress-const.js b/test/mjsunit/regress/regress-2596.js |
similarity index 73% |
copy from test/mjsunit/compiler/regress-const.js |
copy to test/mjsunit/regress/regress-2596.js |
index aa55d0fd3ae17051a084a6bf28c2257f2abc8495..201b88ac99b31330b19951c58357ef6fa5432214 100644 |
--- a/test/mjsunit/compiler/regress-const.js |
+++ b/test/mjsunit/regress/regress-2596.js |
@@ -27,42 +27,30 @@ |
// Flags: --allow-natives-syntax |
-// Test const initialization and assignments. |
-function f() { |
- var x = 42; |
- while (true) { |
- const y = x; |
- if (--x == 0) return y; |
- } |
+var bytes = new Uint8Array([ |
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f]); // kHoleNaN |
+var doubles = new Float64Array(bytes.buffer); |
+assertTrue(isNaN(doubles[0])); |
+ |
+var prototype = [2.5, 2.5]; |
+var array = [3.5, 3.5]; |
+array.__proto__ = prototype; |
+assertTrue(%HasFastDoubleElements(array)); |
+ |
+function boom(index) { |
+ array[index] = doubles[0]; |
+ return array[index]; |
} |
-function g() { |
- const x = 42; |
- x += 1; |
- return x; |
-} |
- |
-for (var i = 0; i < 5; i++) { |
- f(); |
- g(); |
-} |
- |
-%OptimizeFunctionOnNextCall(f); |
-%OptimizeFunctionOnNextCall(g); |
+assertTrue(isNaN(boom(0))); |
+assertTrue(isNaN(boom(0))); |
+assertTrue(isNaN(boom(0))); |
-assertEquals(42, f()); |
-assertEquals(42, g()); |
- |
- |
-function h(a, b) { |
- var r = a + b; |
- const X = 42; |
- return r + X; |
-} |
+// Test hydrogen |
+%OptimizeFunctionOnNextCall(boom); |
+assertTrue(isNaN(boom(0))); |
+assertTrue(isNaN(boom(0))); |
+assertTrue(isNaN(boom(0))); |
-for (var i = 0; i < 5; i++) h(1,2); |
-%OptimizeFunctionOnNextCall(h); |
-assertEquals(45, h(1,2)); |
-assertEquals("foo742", h("foo", 7)); |