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

Issue 221173011: Simplify handling of IC and megamorphic cache misses. (Closed)

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

Description

Simplify and improve handling of IC and megamorphic cache miss handling. Instead of going back and forth from stub code to C++, perform only the lookup in C++ and call target functions only from stub code. noSuchMethod and implicit closure invocations are now also work with the megamorphic cache. Before they would go slow-case in the megamorphic case. This CL eliminates the InstanceFunctionLookup stub that was previously used to handle noSuchMethod and implicit closure invocations. R=srdjan@google.com Committed: https://code.google.com/p/dart/source/detail?r=34774

Patch Set 1 #

Patch Set 2 : #

Total comments: 7

Patch Set 3 : rebased #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+149 lines, -452 lines) Patch
M runtime/vm/code_generator.h View 1 2 3 chunks +0 lines, -5 lines 0 comments Download
M runtime/vm/code_generator.cc View 1 2 5 chunks +92 lines, -206 lines 0 comments Download
M runtime/vm/instructions_arm_test.cc View 1 2 7 chunks +8 lines, -8 lines 0 comments Download
M runtime/vm/instructions_ia32_test.cc View 1 2 3 chunks +5 lines, -5 lines 0 comments Download
M runtime/vm/instructions_mips_test.cc View 1 2 4 chunks +5 lines, -5 lines 0 comments Download
M runtime/vm/instructions_x64_test.cc View 1 2 4 chunks +5 lines, -5 lines 0 comments Download
M runtime/vm/stack_frame_test.cc View 1 2 1 chunk +2 lines, -4 lines 0 comments Download
M runtime/vm/stub_code.h View 1 2 1 chunk +0 lines, -1 line 0 comments Download
M runtime/vm/stub_code_arm.cc View 1 2 3 chunks +8 lines, -48 lines 1 comment Download
M runtime/vm/stub_code_ia32.cc View 1 2 3 chunks +7 lines, -55 lines 0 comments Download
M runtime/vm/stub_code_mips.cc View 1 2 4 chunks +8 lines, -57 lines 0 comments Download
M runtime/vm/stub_code_x64.cc View 1 2 4 chunks +9 lines, -53 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
Florian Schneider
6 years, 8 months ago (2014-04-03 13:17:50 UTC) #1
srdjan
https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc#newcode626 runtime/vm/code_generator.cc:626: const ICData& ic_data) { This method does not compile ...
6 years, 8 months ago (2014-04-03 18:30:22 UTC) #2
Florian Schneider
https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc#newcode626 runtime/vm/code_generator.cc:626: const ICData& ic_data) { On 2014/04/03 18:30:23, srdjan wrote: ...
6 years, 8 months ago (2014-04-04 09:31:27 UTC) #3
srdjan
lgtm https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc File runtime/vm/code_generator.cc (right): https://codereview.chromium.org/221173011/diff/20001/runtime/vm/code_generator.cc#newcode923 runtime/vm/code_generator.cc:923: arguments.SetReturn(target_function); On 2014/04/04 09:31:27, Florian Schneider wrote: > ...
6 years, 8 months ago (2014-04-04 15:36:24 UTC) #4
Florian Schneider
Committed patchset #3 manually as r34774 (presubmit successful).
6 years, 8 months ago (2014-04-07 09:28:09 UTC) #5
zra
6 years, 8 months ago (2014-04-07 14:32:12 UTC) #6
Message was sent while issue was closed.
https://codereview.chromium.org/221173011/diff/40001/runtime/vm/stub_code_arm.cc
File runtime/vm/stub_code_arm.cc (left):

https://codereview.chromium.org/221173011/diff/40001/runtime/vm/stub_code_arm...
runtime/vm/stub_code_arm.cc:446: void
StubCode::GenerateInstanceFunctionLookupStub(Assembler* assembler) {
Now that I've started on the arm64 port, it would be helpful to add/remove
stubs, etc., there as well, even though everything is UNIMPLEMENTED(), just so I
can keep it building and we can stay consistent across the architectures.

Powered by Google App Engine
This is Rietveld 408576698