Reviewers: jarin,

Description:
Fix representation inference for mutable double boxes.

R=ja...@chromium.org
BUG=v8:3307
TEST=mjsunit/regress/regress-3307

Please review this at https://codereview.chromium.org/298723014/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+15, -9 lines):
  M src/hydrogen-instructions.h
  A + test/mjsunit/regress/regress-3307.js


Index: src/hydrogen-instructions.h
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
index 05b31162af5730e4b83bb5844ed1aad40615f823..602b35e8394aeab1aa46d54e32278f1355f9a195 100644
--- a/src/hydrogen-instructions.h
+++ b/src/hydrogen-instructions.h
@@ -5503,6 +5503,9 @@ class HAllocate V8_FINAL : public HTemplateInstruction<2> {
       return Representation::Integer32();
     }
   }
+  virtual Representation KnownOptimalRepresentation() V8_OVERRIDE {
+    return representation();
+  }

   virtual Handle<Map> GetMonomorphicJSObjectMap() {
     return known_initial_map_;
Index: test/mjsunit/regress/regress-3307.js
diff --git a/test/mjsunit/regress/regress-check-eliminate-loop-phis.js b/test/mjsunit/regress/regress-3307.js
similarity index 54%
copy from test/mjsunit/regress/regress-check-eliminate-loop-phis.js
copy to test/mjsunit/regress/regress-3307.js
index 3791c35f71ccfc50dd384978e449103b39f6bff7..eba16cd7b9c3d8e456eed1a89e09dfcc8f07831b 100644
--- a/test/mjsunit/regress/regress-check-eliminate-loop-phis.js
+++ b/test/mjsunit/regress/regress-3307.js
@@ -4,18 +4,21 @@

 // Flags: --allow-natives-syntax

+function p(x) {
+  this.x = x;
+}
+
 function f() {
-  var o = {x:1};
-  var y = {y:2.5, x:0};
-  var result;
-  for (var i = 0; i < 2; i++) {
-    result = o.x + 3;
-    o = y;
+  var a = new p(1), b = new p(2);
+  for (var i = 0; i < 1; i++) {
+    a.x += b.x;
   }
-  return result;
+  return a.x;
 }

-f();
-f();
+new p(0.1); // make 'x' mutable box double field in p.
+
+assertEquals(3, f());
+assertEquals(3, f());
 %OptimizeFunctionOnNextCall(f);
 assertEquals(3, f());


--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to