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

Issue 181183004: VM: Improve receiver class check in polymorphic inlining. (Closed)

Created:
6 years, 10 months ago by Florian Schneider
Modified:
6 years, 5 months ago
Reviewers:
Cutch, srdjan
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

VM: Improve receiver class check in polymorphic inlining. Avoid reloading the class-id at the entry to last inlined variant at inlined polymorphic call sites. For this I added a new check instruction CheckClassIdInstr to deoptimize on integer-comparison. In polymorphic CheckClass with small dense ranges of class-ids now generate max. 2 branch instructions by doing a range check and computing a test mask instead of a sequence of compare and branch instructions. R=johnmccutchan@google.com Committed: https://code.google.com/p/dart/source/detail?r=38116

Patch Set 1 #

Patch Set 2 : improved polymorphic ClassCheck ia32 #

Total comments: 2

Patch Set 3 : rebased, ported to all platforms #

Patch Set 4 : #

Patch Set 5 : #

Patch Set 6 : arm64 port #

Patch Set 7 : #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+482 lines, -90 lines) Patch
M runtime/vm/assembler_arm.h View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/assembler_ia32.h View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/assembler_ia32.cc View 1 2 3 4 5 1 chunk +8 lines, -0 lines 0 comments Download
M runtime/vm/assembler_ia32_test.cc View 1 2 3 4 5 1 chunk +20 lines, -0 lines 0 comments Download
M runtime/vm/assembler_x64.h View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/assembler_x64.cc View 1 2 3 4 5 1 chunk +9 lines, -0 lines 0 comments Download
M runtime/vm/assembler_x64_test.cc View 1 2 3 4 5 1 chunk +20 lines, -0 lines 0 comments Download
M runtime/vm/disassembler_ia32.cc View 1 2 3 4 5 3 chunks +8 lines, -4 lines 2 comments Download
M runtime/vm/flow_graph_inliner.cc View 1 2 3 4 5 2 chunks +15 lines, -33 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 2 3 4 5 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.h View 1 2 3 4 5 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.cc View 1 2 3 4 5 1 chunk +10 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 4 5 5 chunks +39 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 3 4 5 3 chunks +40 lines, -1 line 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 1 2 3 4 5 3 chunks +59 lines, -9 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 1 2 3 4 5 2 chunks +60 lines, -9 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 2 3 4 5 3 chunks +61 lines, -12 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 1 2 3 4 5 3 chunks +62 lines, -10 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 2 3 4 5 3 chunks +62 lines, -12 lines 0 comments Download

Messages

Total messages: 11 (0 generated)
Florian Schneider
6 years, 10 months ago (2014-02-26 13:08:38 UTC) #1
Cutch
lgtm
6 years, 9 months ago (2014-02-27 21:58:37 UTC) #2
Florian Schneider
On 2014/02/27 21:58:37, Cutch wrote: > lgtm I didn't land this yet because I'm investigating ...
6 years, 9 months ago (2014-03-03 15:49:01 UTC) #3
srdjan
DBC and question: do you see any performance improvement? https://codereview.chromium.org/181183004/diff/20001/runtime/vm/intermediate_language.h File runtime/vm/intermediate_language.h (right): https://codereview.chromium.org/181183004/diff/20001/runtime/vm/intermediate_language.h#newcode6908 runtime/vm/intermediate_language.h:6908: ...
6 years, 9 months ago (2014-03-03 18:23:49 UTC) #4
Florian Schneider
Please take another look. I ported it to all platforms. https://codereview.chromium.org/181183004/diff/20001/runtime/vm/intermediate_language.h File runtime/vm/intermediate_language.h (right): https://codereview.chromium.org/181183004/diff/20001/runtime/vm/intermediate_language.h#newcode6908 ...
6 years, 7 months ago (2014-05-05 15:01:47 UTC) #5
Cutch
On 2014/05/05 15:01:47, Florian Schneider wrote: > Please take another look. I ported it to ...
6 years, 6 months ago (2014-06-20 14:50:07 UTC) #6
Florian Schneider
On 2014/06/20 14:50:07, Cutch wrote: > On 2014/05/05 15:01:47, Florian Schneider wrote: > > Please ...
6 years, 6 months ago (2014-06-23 09:35:13 UTC) #7
Florian Schneider
Reviving this old CL and ported it to arm64. I improved temp register usage and ...
6 years, 5 months ago (2014-07-09 09:43:06 UTC) #8
Cutch
https://codereview.chromium.org/181183004/diff/110001/runtime/vm/disassembler_ia32.cc File runtime/vm/disassembler_ia32.cc (right): https://codereview.chromium.org/181183004/diff/110001/runtime/vm/disassembler_ia32.cc#newcode1821 runtime/vm/disassembler_ia32.cc:1821: } // NOLINT Did you add this to avoid ...
6 years, 5 months ago (2014-07-09 19:22:53 UTC) #9
Florian Schneider
https://codereview.chromium.org/181183004/diff/110001/runtime/vm/disassembler_ia32.cc File runtime/vm/disassembler_ia32.cc (right): https://codereview.chromium.org/181183004/diff/110001/runtime/vm/disassembler_ia32.cc#newcode1821 runtime/vm/disassembler_ia32.cc:1821: } // NOLINT On 2014/07/09 19:22:53, Cutch wrote: > ...
6 years, 5 months ago (2014-07-10 09:00:59 UTC) #10
Florian Schneider
6 years, 5 months ago (2014-07-10 11:33:20 UTC) #11
Message was sent while issue was closed.
Committed patchset #7 manually as r38116 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698