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

Unified Diff: runtime/vm/flow_graph_builder.cc

Issue 304703002: Split GuardField into GuardFieldType and GuardFieldLength instructions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/flow_graph_builder.cc
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 9e9644f6fd2003b01980e2d63aa5066e4bd35ee3..f7804925d85302cf4ccaa29b7d0b35a350bcc24c 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -3174,11 +3174,19 @@ void EffectGraphVisitor::VisitStoreInstanceFieldNode(
}
store_value = Bind(BuildStoreExprTemp(store_value));
- GuardFieldInstr* guard =
- new GuardFieldInstr(store_value,
- node->field(),
- Isolate::Current()->GetNextDeoptId());
- AddInstruction(guard);
+ GuardFieldClassInstr* guard_field_class =
+ new GuardFieldClassInstr(store_value,
+ node->field(),
+ Isolate::Current()->GetNextDeoptId());
Florian Schneider 2014/05/28 14:57:36 Why get a new deopt-id? The Instruction constructo
Florian Schneider 2014/05/28 14:58:52 Never mind this comment. It's needed because we us
+ AddInstruction(guard_field_class);
+
+ store_value = Bind(BuildLoadExprTemp());
+ GuardFieldLengthInstr* guard_field_length =
+ new GuardFieldLengthInstr(store_value,
+ node->field(),
+ Isolate::Current()->GetNextDeoptId());
Florian Schneider 2014/05/28 14:57:36 Why get a new deopt-id? The Instruction constructo
+ AddInstruction(guard_field_length);
+
store_value = Bind(BuildLoadExprTemp());
StoreInstanceFieldInstr* store =

Powered by Google App Engine
This is Rietveld 408576698