Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Issue 2036493006: Keep prototype maps in dictionary mode until ICs see them (Closed)

Created:
4 years, 6 months ago by Jakob Kummerow
Modified:
4 years, 6 months ago
Reviewers:
Toon Verwaest
CC:
v8-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

Keep prototype maps in dictionary mode until ICs see them Adding properties to prototypes is faster when we don't force their maps into fast mode yet. Once a prototype shows up in the IC system, its setup phase is likely over, and it makes sense to transition it to fast properties. This patch speeds up the microbenchmark in the bug by 20x. Octane-Typescript sees a 3% improvement. BUG=chromium:607010 Committed: https://crrev.com/be0494ba5bfdc8f7b225372ed7990a06dca7ad46 Cr-Commit-Position: refs/heads/master@{#36828}

Patch Set 1 #

Patch Set 2 : fix tests & rebase #

Total comments: 7

Patch Set 3 : addressed comments #

Patch Set 4 : rebased #

Patch Set 5 : make ignition tests happy #

Unified diffs Side-by-side diffs Delta from patch set Stats (+109 lines, -49 lines) Patch
M src/api.cc View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M src/builtins.cc View 1 2 3 1 chunk +1 line, -2 lines 0 comments Download
M src/crankshaft/hydrogen.cc View 1 2 3 1 chunk +1 line, -2 lines 0 comments Download
M src/factory.cc View 1 1 chunk +1 line, -0 lines 0 comments Download
M src/globals.h View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M src/ic/handler-compiler.cc View 1 2 3 1 chunk +1 line, -2 lines 0 comments Download
M src/ic/ic.cc View 1 2 3 3 chunks +6 lines, -1 line 0 comments Download
M src/keys.cc View 1 2 1 chunk +1 line, -2 lines 0 comments Download
M src/lookup.cc View 1 2 1 chunk +1 line, -2 lines 0 comments Download
M src/messages.cc View 1 2 1 chunk +2 lines, -3 lines 0 comments Download
M src/objects.h View 1 2 3 4 chunks +15 lines, -2 lines 0 comments Download
M src/objects.cc View 1 2 3 9 chunks +42 lines, -12 lines 0 comments Download
M src/objects-inl.h View 1 2 3 chunks +7 lines, -2 lines 0 comments Download
M src/prototype.h View 1 2 2 chunks +8 lines, -8 lines 0 comments Download
M src/runtime/runtime-array.cc View 1 2 3 2 chunks +2 lines, -4 lines 0 comments Download
M src/runtime/runtime-debug.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M src/runtime/runtime-forin.cc View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download
M src/string-stream.cc View 1 2 1 chunk +1 line, -1 line 0 comments Download
M test/mjsunit/dictionary-properties.js View 1 1 chunk +7 lines, -1 line 0 comments Download
M test/mjsunit/fast-prototype.js View 1 chunk +8 lines, -2 lines 0 comments Download
M test/mjsunit/regress/regress-put-prototype-transition.js View 1 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 15 (6 generated)
Jakob Kummerow
PTAL. https://codereview.chromium.org/2036493006/diff/20001/src/objects.h File src/objects.h (right): https://codereview.chromium.org/2036493006/diff/20001/src/objects.h#newcode2173 src/objects.h:2173: static void MakePrototypesFast(Handle<Object> receiver, bool include_receiver, Would "MakePrototypesGreatAgain" ...
4 years, 6 months ago (2016-06-07 14:36:37 UTC) #2
Toon Verwaest
Looking good. Seems simple enough. A few minor comments. https://codereview.chromium.org/2036493006/diff/20001/src/objects.cc File src/objects.cc (right): https://codereview.chromium.org/2036493006/diff/20001/src/objects.cc#newcode12063 src/objects.cc:12063: ...
4 years, 6 months ago (2016-06-07 14:48:07 UTC) #3
Jakob Kummerow
https://codereview.chromium.org/2036493006/diff/20001/src/objects.cc File src/objects.cc (right): https://codereview.chromium.org/2036493006/diff/20001/src/objects.cc#newcode12063 src/objects.cc:12063: GetOrCreatePrototypeInfo(map, isolate)->set_should_be_fast_map(value); On 2016/06/07 14:48:06, Toon Verwaest wrote: > ...
4 years, 6 months ago (2016-06-08 12:19:00 UTC) #4
Toon Verwaest
cool, lgtm
4 years, 6 months ago (2016-06-08 12:21:54 UTC) #5
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2036493006/40001
4 years, 6 months ago (2016-06-08 12:26:21 UTC) #7
commit-bot: I haz the power
Try jobs failed on following builders: v8_linux64_avx2_rel_ng on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_avx2_rel_ng/builds/2816) v8_linux64_avx2_rel_ng_triggered on tryserver.v8 (JOB_FAILED, ...
4 years, 6 months ago (2016-06-08 12:43:52 UTC) #9
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2036493006/80001
4 years, 6 months ago (2016-06-08 14:16:47 UTC) #12
commit-bot: I haz the power
Committed patchset #5 (id:80001)
4 years, 6 months ago (2016-06-08 14:43:30 UTC) #13
commit-bot: I haz the power
4 years, 6 months ago (2016-06-08 14:43:57 UTC) #15
Message was sent while issue was closed.
Patchset 5 (id:??) landed as
https://crrev.com/be0494ba5bfdc8f7b225372ed7990a06dca7ad46
Cr-Commit-Position: refs/heads/master@{#36828}

Powered by Google App Engine
This is Rietveld 408576698