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.