Index: test/mjsunit/regress/regress-phi-truncation.js |
diff --git a/test/mjsunit/regress/regress-247688.js b/test/mjsunit/regress/regress-phi-truncation.js |
similarity index 63% |
copy from test/mjsunit/regress/regress-247688.js |
copy to test/mjsunit/regress/regress-phi-truncation.js |
index 80e2884c705ef230e96a93ede8e5815175b01363..940efe335731c50f4afd1a9221ecbfc233138821 100644 |
--- a/test/mjsunit/regress/regress-247688.js |
+++ b/test/mjsunit/regress/regress-phi-truncation.js |
@@ -27,54 +27,63 @@ |
// Flags: --allow-natives-syntax |
-var a = {}; |
-a.x = 1 |
-a.y = 1.5 |
+function test(fun, expectation) { |
+ assertEquals(1, fun(1)); |
+ %OptimizeFunctionOnNextCall(fun); |
+ assertEquals(expectation, fun(0)); |
+} |
-var b = {} |
-b.x = 1.5; |
-b.y = 1; |
+test(function(x) { |
+ var a = x ? true : false; |
+ return a | 0; |
+}, 0); |
-var c = {} |
-c.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : true; |
+ return a | 0; |
+}, 1); |
-var d = {} |
-d.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : "0"; |
+ return a | 0; |
+}, 0); |
-var e = {} |
-e.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : "1"; |
+ return a | 0; |
+}, 1); |
-var f = {} |
-f.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : "-1"; |
+ return a | 0; |
+}, -1); |
-var g = {} |
-g.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : "-0"; |
+ return a | 0; |
+}, 0); |
-var h = {} |
-h.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : "0x1234"; |
+ return a | 0; |
+}, 0x1234); |
-var i = {} |
-i.x = 1.5; |
+test(function(x) { |
+ var a = x ? true : { valueOf: function() { return 2; } }; |
+ return a | 0; |
+}, 2); |
-var o = {} |
-var p = {y : 10, z : 1} |
-o.__proto__ = p; |
-delete p.z |
+test(function(x) { |
+ var a = x ? true : undefined; |
+ return a | 0; |
+}, 0); |
-function foo(v, w) { |
- // Make load via IC in optimized code. Its target will get overwritten by |
- // lazy deopt patch for the stack check. |
- v.y; |
- // Make store with transition to make this code dependent on the map. |
- w.y = 1; |
- return b.y; |
-} |
+test(function(x) { |
+ var a = x ? true : null; |
+ return a | 0; |
+}, 0); |
-foo(o, c); |
-foo(o, d); |
-foo(o, e); |
-%OptimizeFunctionOnNextCall(foo); |
-foo(b, f); |
-foo(b, g); |
-foo(b, h); |
-foo(a, i); |
+test(function(x) { |
+ var a = x ? true : ""; |
+ return a | 0; |
+}, 0); |