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

Issue 27307005: Change == into an instance call to allow polymorphic inlining of ==. (Closed)

Created:
7 years, 2 months ago by Florian Schneider
Modified:
7 years, 1 month ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

Change == into an instance call to allow polymorphic inlining of ==. In unoptimized code equality is now just another instance call. The optimizer replaces it with a specialized implementation based on static type information and type feedback. Many of the manual optimizations of == in the optimizer are now just handled by the generic inliner, plus polymorphic inlining of == calls is now possible. This also eliminates the need for a lot of duplicated code in the backend. I adapted the inlining heuristics to compensate for the slightly larger inital flow graph size. Committed: https://code.google.com/p/dart/source/detail?r=29800

Patch Set 1 #

Patch Set 2 : x64 port and better folding of comparisons #

Patch Set 3 : #

Patch Set 4 : #

Patch Set 5 : rebased #

Patch Set 6 : ported to ARM/MIPS #

Patch Set 7 : #

Total comments: 6

Patch Set 8 : rebased, addressed comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+287 lines, -1538 lines) Patch
M runtime/lib/object.cc View 1 2 3 4 5 6 7 1 chunk +7 lines, -0 lines 0 comments Download
M runtime/lib/object_patch.dart View 1 2 3 4 5 6 7 1 chunk +3 lines, -0 lines 0 comments Download
M runtime/vm/bootstrap_natives.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph_builder.h View 1 2 3 4 5 6 7 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_builder.cc View 1 2 3 4 5 6 7 6 chunks +82 lines, -38 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 3 4 5 6 7 1 chunk +0 lines, -3 lines 0 comments Download
M runtime/vm/flow_graph_inliner.cc View 1 2 3 4 5 6 7 1 chunk +15 lines, -3 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.h View 1 2 3 4 5 6 7 3 chunks +1 line, -19 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 2 3 4 5 6 7 11 chunks +124 lines, -240 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.cc View 1 2 3 4 5 6 7 2 chunks +3 lines, -2 lines 0 comments Download
M runtime/vm/il_printer.cc View 1 2 3 4 5 6 7 1 chunk +0 lines, -3 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 4 5 6 7 6 chunks +17 lines, -41 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 3 4 5 6 7 7 chunks +9 lines, -23 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 1 2 3 4 5 6 7 4 chunks +4 lines, -275 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 2 3 4 5 6 7 4 chunks +4 lines, -288 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 1 2 3 4 5 6 7 4 chunks +4 lines, -314 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 2 3 4 5 6 7 4 chunks +4 lines, -288 lines 0 comments Download
M runtime/vm/intrinsifier.h View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/locations.cc View 1 2 3 4 5 6 7 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/symbols.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 5 (0 generated)
Florian Schneider
https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc#newcode2960 runtime/vm/flow_graph_builder.cc:2960: // Receiver is not a number because numbers override ...
7 years, 1 month ago (2013-10-28 13:34:19 UTC) #1
srdjan
DBC https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc#newcode1366 runtime/vm/flow_graph_builder.cc:1366: intptr_t token_pos) { Should you assert that kind ...
7 years, 1 month ago (2013-10-28 21:02:24 UTC) #2
Kevin Millikin (Google)
Looks good to me.
7 years, 1 month ago (2013-10-29 11:26:06 UTC) #3
Florian Schneider
https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): https://codereview.chromium.org/27307005/diff/298001/runtime/vm/flow_graph_builder.cc#newcode1366 runtime/vm/flow_graph_builder.cc:1366: intptr_t token_pos) { On 2013/10/28 21:02:25, srdjan wrote: > ...
7 years, 1 month ago (2013-11-04 10:39:54 UTC) #4
fschneider
7 years, 1 month ago (2013-11-04 11:33:17 UTC) #5
Message was sent while issue was closed.
Committed patchset #8 manually as r29800 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698