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

Issue 2388093003: VM: Make optimized try-catch work in DBC. (Closed)

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

Description

VM: Make optimized try-catch work in DBC. The catch entry block has all locals in fixed locations (Rj) where j = kNumberOfRegisters - i for parameter i. This means we reserve a range of DBC registers at the top-end of the frame. Those registers are blocked for general allocation to avoid any overlap with the rest of the registers that are allocated from the bottom. Each optimized frame with a try-catch will be kNumberOfRegisters wide. BUG= R=vegorov@google.com Committed: https://github.com/dart-lang/sdk/commit/6d66f3dea89027c083af791becbce3dbc6e5d257

Patch Set 1 #

Total comments: 8

Patch Set 2 : addressed comments, fix bug in CheckClass #

Total comments: 4

Patch Set 3 : progress #

Patch Set 4 : new test file #

Total comments: 5

Patch Set 5 : address comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+146 lines, -26 lines) Patch
M runtime/vm/constants_dbc.h View 1 2 3 4 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/flow_graph_allocator.h View 1 2 3 4 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_allocator.cc View 1 2 3 4 5 chunks +56 lines, -10 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 3 chunks +21 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_compiler_dbc.cc View 1 2 3 4 1 chunk +3 lines, -1 line 0 comments Download
M runtime/vm/intermediate_language_dbc.cc View 1 2 3 4 2 chunks +27 lines, -5 lines 0 comments Download
M runtime/vm/object.cc View 1 2 3 4 1 chunk +1 line, -1 line 0 comments Download
M tests/corelib/big_integer_arith_vm_test.dart View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M tests/corelib/corelib.status View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
A + tests/language/try_catch_optimized5_test.dart View 1 2 3 4 chunks +33 lines, -7 lines 0 comments Download

Messages

Total messages: 18 (3 generated)
Florian Schneider
4 years, 2 months ago (2016-10-04 00:32:18 UTC) #2
zra
https://codereview.chromium.org/2388093003/diff/1/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/1/runtime/vm/flow_graph_allocator.cc#newcode634 runtime/vm/flow_graph_allocator.cc:634: intptr_t exception_reg = -catch_entry->exception_var().index() - 1; Can you use ...
4 years, 2 months ago (2016-10-04 15:22:48 UTC) #3
Florian Schneider
https://codereview.chromium.org/2388093003/diff/1/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/1/runtime/vm/flow_graph_allocator.cc#newcode634 runtime/vm/flow_graph_allocator.cc:634: intptr_t exception_reg = -catch_entry->exception_var().index() - 1; On 2016/10/04 15:22:48, ...
4 years, 2 months ago (2016-10-04 17:01:05 UTC) #4
Vyacheslav Egorov (Google)
https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc#newcode736 runtime/vm/flow_graph_allocator.cc:736: if (defn->IsParameter() && (range->spill_slot().stack_index() >= 0)) { I thought ...
4 years, 2 months ago (2016-10-04 17:07:54 UTC) #5
Florian Schneider
https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/intermediate_language_dbc.cc File runtime/vm/intermediate_language_dbc.cc (right): https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/intermediate_language_dbc.cc#newcode1413 runtime/vm/intermediate_language_dbc.cc:1413: is_dense_switch = Smi::IsValid(cid_mask); I'll fix this in a follow-up ...
4 years, 2 months ago (2016-10-04 17:07:57 UTC) #6
Florian Schneider
https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc#newcode736 runtime/vm/flow_graph_allocator.cc:736: if (defn->IsParameter() && (range->spill_slot().stack_index() >= 0)) { On 2016/10/04 ...
4 years, 2 months ago (2016-10-04 17:11:02 UTC) #7
Vyacheslav Egorov (Google)
https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc#newcode736 runtime/vm/flow_graph_allocator.cc:736: if (defn->IsParameter() && (range->spill_slot().stack_index() >= 0)) { On 2016/10/04 ...
4 years, 2 months ago (2016-10-04 17:55:31 UTC) #8
Florian Schneider
On 2016/10/04 17:55:31, Vyacheslav Egorov (Google) wrote: > https://codereview.chromium.org/2388093003/diff/20001/runtime/vm/flow_graph_allocator.cc > File runtime/vm/flow_graph_allocator.cc (right): > > ...
4 years, 2 months ago (2016-10-04 21:51:33 UTC) #9
Vyacheslav Egorov (Google)
The reason why I don't think the current approach is working is that we need ...
4 years, 2 months ago (2016-10-05 05:09:11 UTC) #10
Florian Schneider
All variables in the catch entry environment get fixed registers assigned from the top-end of ...
4 years, 2 months ago (2016-10-06 00:58:22 UTC) #12
Florian Schneider
Ptal https://codereview.chromium.org/2388093003/diff/60001/tests/corelib/corelib.status File tests/corelib/corelib.status (right): https://codereview.chromium.org/2388093003/diff/60001/tests/corelib/corelib.status#newcode211 tests/corelib/corelib.status:211: big_integer_arith_vm_test/modPow: Pass, RuntimeError # Issue #27474 This is ...
4 years, 2 months ago (2016-10-12 22:21:21 UTC) #13
Vyacheslav Egorov (Google)
LGTM I can't find anything wrong with this approach, though it does make frame of ...
4 years, 2 months ago (2016-10-13 15:02:04 UTC) #14
Florian Schneider
https://codereview.chromium.org/2388093003/diff/60001/runtime/vm/flow_graph_allocator.cc File runtime/vm/flow_graph_allocator.cc (right): https://codereview.chromium.org/2388093003/diff/60001/runtime/vm/flow_graph_allocator.cc#newcode674 runtime/vm/flow_graph_allocator.cc:674: range->set_assigned_location(Location::RegisterLocation(slot_index)); On 2016/10/13 15:02:04, Vyacheslav Egorov (Google) wrote: > ...
4 years, 2 months ago (2016-10-13 17:24:04 UTC) #15
Florian Schneider
On 2016/10/13 15:02:04, Vyacheslav Egorov (Google) wrote: > LGTM > > I can't find anything ...
4 years, 2 months ago (2016-10-13 17:30:43 UTC) #16
Florian Schneider
4 years, 2 months ago (2016-10-13 18:36:32 UTC) #18
Message was sent while issue was closed.
Committed patchset #5 (id:80001) manually as
6d66f3dea89027c083af791becbce3dbc6e5d257 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698