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

Issue 2279563002: AOT: Single target stub. (Closed)

Created:
4 years, 3 months ago by rmacnak
Modified:
4 years, 3 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Target Ref:
refs/heads/master
Visibility:
Public.

Description

AOT: When a call goes polymorphic but has a single target, transition to a stub that does a cid range check. Expand the range on a miss if all classes in the range have the same lookup result, otherwise transition to the stub that does a linear scan of ICData. Because we do a depth-first sort of classes during AOT, if a call site sees only objects all inheriting the same function as the call target, the call site will be handled by this new stub. Adjust LoadClassIdMayBeSmi on x64 to preserve the object. R=fschneider@google.com Committed: https://github.com/dart-lang/sdk/commit/ba94427eb13dff41b5eb5850219034aaf0016535

Patch Set 1 #

Patch Set 2 : cid sort #

Patch Set 3 : . #

Patch Set 4 : . #

Patch Set 5 : . #

Patch Set 6 : checkpoint #

Patch Set 7 : . #

Patch Set 8 : prints #

Patch Set 9 : . #

Total comments: 12

Patch Set 10 : . #

Patch Set 11 : add offset assertions #

Unified diffs Side-by-side diffs Delta from patch set Stats (+446 lines, -3 lines) Patch
M runtime/vm/assembler_x64.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M runtime/vm/code_generator.cc View 1 2 3 4 5 6 7 8 9 2 chunks +146 lines, -0 lines 0 comments Download
M runtime/vm/dart.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +3 lines, -0 lines 0 comments Download
M runtime/vm/object.h View 1 2 3 4 5 6 7 8 9 3 chunks +38 lines, -0 lines 0 comments Download
M runtime/vm/object.cc View 1 5 chunks +36 lines, -0 lines 0 comments Download
M runtime/vm/object_service.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/raw_object.h View 1 2 3 4 5 6 7 8 9 2 chunks +16 lines, -0 lines 0 comments Download
M runtime/vm/raw_object.cc View 1 2 3 4 5 1 chunk +7 lines, -0 lines 0 comments Download
M runtime/vm/raw_object_snapshot.cc View 1 chunk +18 lines, -0 lines 0 comments Download
M runtime/vm/runtime_entry_list.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/stub_code.h View 1 2 3 4 5 6 1 chunk +2 lines, -1 line 0 comments Download
M runtime/vm/stub_code_arm.cc View 1 2 3 4 5 6 7 8 9 1 chunk +42 lines, -0 lines 0 comments Download
M runtime/vm/stub_code_arm64.cc View 1 2 3 4 5 6 7 8 9 1 chunk +44 lines, -0 lines 0 comments Download
M runtime/vm/stub_code_ia32.cc View 1 2 3 4 5 6 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/stub_code_mips.cc View 1 2 3 4 5 6 7 8 9 1 chunk +41 lines, -0 lines 0 comments Download
M runtime/vm/stub_code_x64.cc View 1 2 3 4 5 6 7 8 9 1 chunk +39 lines, -0 lines 0 comments Download
M runtime/vm/symbols.h View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 14 (7 generated)
rmacnak
layout benchmark: +5.1% build benchmark: +8.27% Handles things like Object.== Object.runtimeType Widget.key Element.slot State.config State.config= ...
4 years, 3 months ago (2016-08-30 17:09:29 UTC) #5
Florian Schneider
https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc#newcode1143 runtime/vm/code_generator.cc:1143: // Handle a miss of a megamorphic cache. Comment: ...
4 years, 3 months ago (2016-08-30 20:42:34 UTC) #6
siva
https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc#newcode1036 runtime/vm/code_generator.cc:1036: ClassTable* table = Isolate::Current()->class_table(); why not pass the isolate ...
4 years, 3 months ago (2016-08-30 23:54:53 UTC) #8
kasperl
Cool stuff!
4 years, 3 months ago (2016-08-31 04:56:07 UTC) #10
rmacnak
https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/2279563002/diff/150001/runtime/vm/code_generator.cc#newcode1036 runtime/vm/code_generator.cc:1036: ClassTable* table = Isolate::Current()->class_table(); On 2016/08/30 23:54:53, siva wrote: ...
4 years, 3 months ago (2016-08-31 16:42:57 UTC) #11
Florian Schneider
Lgtm
4 years, 3 months ago (2016-08-31 16:50:39 UTC) #12
rmacnak
4 years, 3 months ago (2016-08-31 18:12:27 UTC) #14
Message was sent while issue was closed.
Committed patchset #11 (id:190001) manually as
ba94427eb13dff41b5eb5850219034aaf0016535 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698