Fix for performance issue 353661 - 23% regression in dromaeo. (issue 206353002)

2 views
Skip to first unread message

mvst...@chromium.org

unread,
Mar 20, 2014, 7:01:26 AM3/20/14
to verw...@chromium.org, v8-...@googlegroups.com
Reviewers: Toon Verwaest,

Message:
Hi Toon, PTAL, thx!
--Michael

Description:
Fix for performance issue 353661 - 23% regression in dromaeo.

The issue was that a previous fix to avoid a logic error was not
targeted enough: it allowed non-transitioning stores to fall
into a code path meant to preserve monomorphic state in the
case of a transitioning store.

BUG=353661
R=verw...@chromium.org

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

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

Affected files (+2, -1 lines):
M src/ic.cc


Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index
e17490406bfe6f660d85966ef1f9f4ef461e9b60..ff9ec1bb42a0e56183228b992254817f4f5b4a6c
100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -1454,7 +1454,8 @@ Handle<Code>
KeyedStoreIC::StoreElementStub(Handle<JSObject> receiver,
if (IsTransitionStoreMode(store_mode)) {
transitioned_receiver_map = ComputeTransitionedMap(receiver,
store_mode);
}
- if (receiver_map.is_identical_to(previous_receiver_map) ||
+ if ((receiver_map.is_identical_to(previous_receiver_map) &&
+ IsTransitionStoreMode(store_mode)) ||
IsTransitionOfMonomorphicTarget(
MapToType<HeapType>(transitioned_receiver_map, isolate()))) {
// If the "old" and "new" maps are in the same elements map family,
or


verw...@chromium.org

unread,
Mar 20, 2014, 9:04:53 AM3/20/14
to mvst...@chromium.org, v8-...@googlegroups.com

mvst...@chromium.org

unread,
Mar 20, 2014, 9:38:14 AM3/20/14
to verw...@chromium.org, v8-...@googlegroups.com
Committed patchset #1 manually as r20127 (presubmit successful).

https://codereview.chromium.org/206353002/
Reply all
Reply to author
Forward
0 new messages