Reviewers: Jakob,
Message:
PTAL
Description:
Fix using monomorphic store instruction for polymorphic stores.
Please review this at https://chromiumcodereview.appspot.com/16875008/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/hydrogen.cc
A + test/mjsunit/regress/regress-polymorphic-store.js
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
9a2072ec9f054cfc311f0265c41fb07ead0f124b..396e98a7f931cd824e516d3faef20a94c1ec97e0
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -6408,7 +6408,8 @@ bool
HOptimizedGraphBuilder::TryStorePolymorphicAsMonomorphic(
AddInstruction(HCheckMaps::New(object, types, zone()));
HInstruction* store;
CHECK_ALIVE_OR_RETURN(
- store = BuildStoreNamedField(object, name, value, types->at(0),
&lookup),
+ store = BuildStoreNamedField(
+ object, name, value, types->at(count - 1), &lookup),
true);
Push(value);
store->set_position(expr->position());
Index: test/mjsunit/regress/regress-polymorphic-store.js
diff --git a/test/mjsunit/regress/regress-2671.js
b/test/mjsunit/regress/regress-polymorphic-store.js
similarity index 85%
copy from test/mjsunit/regress/regress-2671.js
copy to test/mjsunit/regress/regress-polymorphic-store.js
index
8da1b8f07f69c487fe9913e485c60f3e257e0986..4723a7f4343bb79daf5283325ee5c1082abefa79
100644
--- a/test/mjsunit/regress/regress-2671.js
+++ b/test/mjsunit/regress/regress-polymorphic-store.js
@@ -27,19 +27,22 @@
// Flags: --allow-natives-syntax
-var y;
-function f() {
- var a = [];
- a[20] = 0;
- y = 3;
- var i = 7 * (y + -0);
- a[i] = 1/y;
- assertFalse(isNaN(a[i]));
-}
+var o1 = {};
+o1.f1 = function() { return 10; };
+o1.x = 5;
+o1.y = 2;
+var o2 = {};
+o2.x = 5;
+o2.y = 5;
-f();
-f();
-f();
-%OptimizeFunctionOnNextCall(f);
-f();
+function store(o, v) {
+ o.y = v;
+}
+store(o2, 0);
+store(o1, 0);
+store(o2, 0);
+%OptimizeFunctionOnNextCall(store);
+store(o1, 10);
+assertEquals(5, o1.x);
+assertEquals(10, o1.y);
--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.