Index: test/mjsunit/regress/regress-247688.js |
diff --git a/test/mjsunit/regress/regress-234101.js b/test/mjsunit/regress/regress-247688.js |
similarity index 73% |
copy from test/mjsunit/regress/regress-234101.js |
copy to test/mjsunit/regress/regress-247688.js |
index 74228dfabe532efdce2d2cd31736959eaff4349b..80e2884c705ef230e96a93ede8e5815175b01363 100644 |
--- a/test/mjsunit/regress/regress-234101.js |
+++ b/test/mjsunit/regress/regress-247688.js |
@@ -27,16 +27,54 @@ |
// Flags: --allow-natives-syntax |
-// Currently, the gap resolver doesn't handle moves from a ConstantOperand to a |
-// DoubleRegister, but these kind of moves appeared when HConstant::EmitAtUses |
-// was changed to allow special double values (-0, NaN, hole). So we should |
-// either enhance the gap resolver or make sure that such moves don't happen. |
+var a = {}; |
+a.x = 1 |
+a.y = 1.5 |
-function foo(x) { |
- return (x ? NaN : 0.2) + 0.1; |
+var b = {} |
+b.x = 1.5; |
+b.y = 1; |
+ |
+var c = {} |
+c.x = 1.5; |
+ |
+var d = {} |
+d.x = 1.5; |
+ |
+var e = {} |
+e.x = 1.5; |
+ |
+var f = {} |
+f.x = 1.5; |
+ |
+var g = {} |
+g.x = 1.5; |
+ |
+var h = {} |
+h.x = 1.5; |
+ |
+var i = {} |
+i.x = 1.5; |
+ |
+var o = {} |
+var p = {y : 10, z : 1} |
+o.__proto__ = p; |
+delete p.z |
+ |
+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; |
} |
-foo(false); |
-foo(false); |
+foo(o, c); |
+foo(o, d); |
+foo(o, e); |
%OptimizeFunctionOnNextCall(foo); |
-foo(false); |
+foo(b, f); |
+foo(b, g); |
+foo(b, h); |
+foo(a, i); |