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

Issue 1847293002: VM: Improve single-target polymorphic calls. (Closed)

Created:
4 years, 8 months ago by Florian Schneider
Modified:
4 years, 8 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Base URL:
git@github.com:dart-lang/sdk.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

VM: Improve single-target polymorphic calls. Use the existing class-id check for dense ranges in more places. Previously we would fall back to megamorphic lookup with >4 cids, even though we can check cid ranges up to word-size efficiently. Next step is to generalize the dense class id checks to multiple word-sizes. BUG= R=vegorov@google.com Committed: https://github.com/dart-lang/sdk/commit/f6c19ee595ca9495c8b9520259b1cb55b2e152a6

Patch Set 1 #

Patch Set 2 : use kIntptrMax #

Total comments: 2

Patch Set 3 : addressed comment #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+21 lines, -7 lines) Patch
M runtime/vm/intermediate_language.h View 1 2 2 chunks +2 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 2 chunks +15 lines, -6 lines 4 comments Download
M runtime/vm/jit_optimizer.cc View 1 2 2 chunks +4 lines, -1 line 0 comments Download

Messages

Total messages: 9 (3 generated)
Florian Schneider
4 years, 8 months ago (2016-04-01 00:22:57 UTC) #2
Vyacheslav Egorov (Google)
lgtm https://codereview.chromium.org/1847293002/diff/20001/runtime/vm/jit_optimizer.cc File runtime/vm/jit_optimizer.cc (right): https://codereview.chromium.org/1847293002/diff/20001/runtime/vm/jit_optimizer.cc#newcode2671 runtime/vm/jit_optimizer.cc:2671: static bool IsDenseCidRange(const ICData& unary_checks) { I am ...
4 years, 8 months ago (2016-04-01 10:53:59 UTC) #3
Florian Schneider
https://codereview.chromium.org/1847293002/diff/20001/runtime/vm/jit_optimizer.cc File runtime/vm/jit_optimizer.cc (right): https://codereview.chromium.org/1847293002/diff/20001/runtime/vm/jit_optimizer.cc#newcode2671 runtime/vm/jit_optimizer.cc:2671: static bool IsDenseCidRange(const ICData& unary_checks) { On 2016/04/01 10:53:59, ...
4 years, 8 months ago (2016-04-01 15:58:44 UTC) #4
Florian Schneider
Committed patchset #3 (id:40001) manually as f6c19ee595ca9495c8b9520259b1cb55b2e152a6 (presubmit successful).
4 years, 8 months ago (2016-04-01 16:59:31 UTC) #6
srdjan
DBC https://codereview.chromium.org/1847293002/diff/40001/runtime/vm/intermediate_language.cc File runtime/vm/intermediate_language.cc (right): https://codereview.chromium.org/1847293002/diff/40001/runtime/vm/intermediate_language.cc#newcode235 runtime/vm/intermediate_language.cc:235: bool CheckClassInstr::IsDenseCidRange(const ICData& unary_checks) { Assert that 'unary_checks' ...
4 years, 8 months ago (2016-04-01 18:11:30 UTC) #8
Florian Schneider
4 years, 8 months ago (2016-04-03 04:39:52 UTC) #9
Message was sent while issue was closed.
https://codereview.chromium.org/1847293002/diff/40001/runtime/vm/intermediate...
File runtime/vm/intermediate_language.cc (right):

https://codereview.chromium.org/1847293002/diff/40001/runtime/vm/intermediate...
runtime/vm/intermediate_language.cc:235: bool
CheckClassInstr::IsDenseCidRange(const ICData& unary_checks) {
On 2016/04/01 18:11:29, srdjan wrote:
> Assert that 'unary_checks' are unary.

Done.

https://codereview.chromium.org/1847293002/diff/40001/runtime/vm/intermediate...
runtime/vm/intermediate_language.cc:236: if
(unary_checks.GetReceiverClassIdAt(0) == kSmiCid) return false;
On 2016/04/01 18:11:29, srdjan wrote:
> You may want to allow Smi checks since they have to be done anyway before
> extracting cid?

I'll add a TODO for now.

Powered by Google App Engine
This is Rietveld 408576698