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

Issue 304703002: Split GuardField into GuardFieldType and GuardFieldLength instructions. (Closed)

Created:
6 years, 6 months ago by Vyacheslav Egorov (Chromium)
Modified:
6 years, 6 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

Split GuardField into GuardFieldType and GuardFieldLength instructions. Record expected length offset that matches guarded_cid. This greatly simplifies code generation and control flow inside these guards. Fixes the bug that was causing unoptimized code to call into runtime even when guard did not fail. Add --trace-field-guards flags to trace updates to the state of guarded fields' properties. BUG=http://dartbug.com/19003 R=fschneider@google.com, johnmccutchan@google.com, zra@google.com Committed: https://code.google.com/p/dart/source/detail?r=36872

Patch Set 1 #

Patch Set 2 : #

Total comments: 29

Patch Set 3 : #

Total comments: 21

Patch Set 4 : address comments #

Total comments: 5

Patch Set 5 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+991 lines, -1285 lines) Patch
M runtime/vm/code_generator.cc View 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/dart_api_impl.cc View 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/flow_graph_builder.cc View 1 chunk +13 lines, -5 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 1 chunk +4 lines, -5 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 2 chunks +14 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.h View 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/flow_graph_type_propagator.cc View 1 chunk +2 lines, -1 line 0 comments Download
M runtime/vm/il_printer.cc View 1 1 chunk +2 lines, -10 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 chunks +44 lines, -8 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 4 chunks +42 lines, -27 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 1 2 3 4 4 chunks +154 lines, -225 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 1 2 3 4 5 chunks +144 lines, -222 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 2 3 5 chunks +145 lines, -247 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 1 2 3 5 chunks +141 lines, -228 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 2 3 4 chunks +135 lines, -247 lines 0 comments Download
M runtime/vm/object.h View 1 2 5 chunks +16 lines, -11 lines 0 comments Download
M runtime/vm/object.cc View 1 2 6 chunks +123 lines, -42 lines 0 comments Download
M runtime/vm/parser.cc View 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/raw_object.h View 1 2 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/raw_object_snapshot.cc View 1 2 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/snapshot.cc View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 11 (0 generated)
Vyacheslav Egorov (Google)
PTAL This is an ia32 version. I will port if structure looks ok to you.
6 years, 6 months ago (2014-05-28 13:48:15 UTC) #1
Cutch
Structure lgtm. Some other comments. https://codereview.chromium.org/304703002/diff/20001/runtime/vm/intermediate_language_ia32.cc File runtime/vm/intermediate_language_ia32.cc (right): https://codereview.chromium.org/304703002/diff/20001/runtime/vm/intermediate_language_ia32.cc#newcode1535 runtime/vm/intermediate_language_ia32.cc:1535: // Jump when class ...
6 years, 6 months ago (2014-05-28 14:13:31 UTC) #2
Florian Schneider
LGTM with comments. Go ahead with port to the other archs. https://codereview.chromium.org/304703002/diff/20001/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): ...
6 years, 6 months ago (2014-05-28 14:57:36 UTC) #3
Florian Schneider
LGTM with comments. Go ahead with port to the other archs.
6 years, 6 months ago (2014-05-28 14:57:37 UTC) #4
Florian Schneider
https://codereview.chromium.org/304703002/diff/20001/runtime/vm/flow_graph_builder.cc File runtime/vm/flow_graph_builder.cc (right): https://codereview.chromium.org/304703002/diff/20001/runtime/vm/flow_graph_builder.cc#newcode3180 runtime/vm/flow_graph_builder.cc:3180: Isolate::Current()->GetNextDeoptId()); On 2014/05/28 14:57:36, Florian Schneider wrote: > Why ...
6 years, 6 months ago (2014-05-28 14:58:52 UTC) #5
Vyacheslav Egorov (Google)
Comments addressed. Ports finished. Adding Zach for ARM/ARM64/MIPS Please take another look guys. https://codereview.chromium.org/304703002/diff/20001/runtime/vm/flow_graph_compiler.cc File ...
6 years, 6 months ago (2014-05-29 17:36:51 UTC) #6
zra
arm64/arm/mips lgtm https://codereview.chromium.org/304703002/diff/40001/runtime/vm/intermediate_language_arm.cc File runtime/vm/intermediate_language_arm.cc (right): https://codereview.chromium.org/304703002/diff/40001/runtime/vm/intermediate_language_arm.cc#newcode1650 runtime/vm/intermediate_language_arm.cc:1650: Register value_reg = locs()->in(0).reg(); const Register https://codereview.chromium.org/304703002/diff/40001/runtime/vm/intermediate_language_arm.cc#newcode1652 ...
6 years, 6 months ago (2014-05-29 18:20:33 UTC) #7
Vyacheslav Egorov (Google)
PTAL https://codereview.chromium.org/304703002/diff/40001/runtime/vm/intermediate_language_arm.cc File runtime/vm/intermediate_language_arm.cc (right): https://codereview.chromium.org/304703002/diff/40001/runtime/vm/intermediate_language_arm.cc#newcode1650 runtime/vm/intermediate_language_arm.cc:1650: Register value_reg = locs()->in(0).reg(); On 2014/05/29 18:20:34, zra ...
6 years, 6 months ago (2014-06-02 10:48:37 UTC) #8
Florian Schneider
lgtm https://codereview.chromium.org/304703002/diff/60001/runtime/vm/intermediate_language_arm.cc File runtime/vm/intermediate_language_arm.cc (right): https://codereview.chromium.org/304703002/diff/60001/runtime/vm/intermediate_language_arm.cc#newcode1698 runtime/vm/intermediate_language_arm.cc:1698: __ CompareImmediate(IP, kIllegalCid); Maybe use cmp instead of ...
6 years, 6 months ago (2014-06-02 11:37:00 UTC) #9
Vyacheslav Egorov (Google)
Thanks for the review. Landing. https://codereview.chromium.org/304703002/diff/60001/runtime/vm/intermediate_language_arm.cc File runtime/vm/intermediate_language_arm.cc (right): https://codereview.chromium.org/304703002/diff/60001/runtime/vm/intermediate_language_arm.cc#newcode1838 runtime/vm/intermediate_language_arm.cc:1838: __ CompareImmediate(IP, Smi::RawValue(field().guarded_list_length())); On ...
6 years, 6 months ago (2014-06-02 12:09:46 UTC) #10
Vyacheslav Egorov (Chromium)
6 years, 6 months ago (2014-06-02 13:54:43 UTC) #11
Message was sent while issue was closed.
Committed patchset #5 manually as r36872 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698