Index: runtime/vm/flow_graph_optimizer.h |
diff --git a/runtime/vm/flow_graph_optimizer.h b/runtime/vm/flow_graph_optimizer.h |
index c28739aaba676eb64fe3a24caaa1ee07c8d27831..0878cee87a27b1e2552d6e53c3153ce582ac2142 100644 |
--- a/runtime/vm/flow_graph_optimizer.h |
+++ b/runtime/vm/flow_graph_optimizer.h |
@@ -28,35 +28,44 @@ class FlowGraphOptimizer : public FlowGraphVisitor { |
void SelectRepresentations(); |
- virtual void VisitStaticCall(StaticCallInstr* instr); |
- virtual void VisitInstanceCall(InstanceCallInstr* instr); |
- virtual void VisitRelationalOp(RelationalOpInstr* instr); |
- virtual void VisitEqualityCompare(EqualityCompareInstr* instr); |
+ virtual void VisitStaticCall(StaticCallComp* comp, BindInstr* instr); |
+ virtual void VisitInstanceCall(InstanceCallComp* comp, BindInstr* instr); |
+ virtual void VisitRelationalOp(RelationalOpComp* comp, BindInstr* instr); |
+ virtual void VisitEqualityCompare(EqualityCompareComp* comp, |
+ BindInstr* instr); |
+ virtual void VisitBind(BindInstr* instr); |
virtual void VisitBranch(BranchInstr* instr); |
// TODO(fschneider): Once we get rid of the distinction between Instruction |
// and computation, this can be made private again. |
- void InsertBefore(Instruction* instr, |
- Definition* defn, |
- Environment* env, |
- Definition::UseKind use_kind); |
+ BindInstr* InsertBefore(Instruction* instr, |
+ Computation* comp, |
+ Environment* env, |
+ BindInstr::UseKind use_kind); |
private: |
- bool TryReplaceWithArrayOp(InstanceCallInstr* call, Token::Kind op_kind); |
- bool TryReplaceWithBinaryOp(InstanceCallInstr* call, Token::Kind op_kind); |
- bool TryReplaceWithUnaryOp(InstanceCallInstr* call, Token::Kind op_kind); |
+ bool TryReplaceWithArrayOp(BindInstr* instr, |
+ InstanceCallComp* comp, |
+ Token::Kind op_kind); |
+ bool TryReplaceWithBinaryOp(BindInstr* instr, |
+ InstanceCallComp* comp, |
+ Token::Kind op_kind); |
+ bool TryReplaceWithUnaryOp(BindInstr* instr, |
+ InstanceCallComp* comp, |
+ Token::Kind op_kind); |
- bool TryInlineInstanceGetter(InstanceCallInstr* call); |
- bool TryInlineInstanceSetter(InstanceCallInstr* call); |
+ bool TryInlineInstanceGetter(BindInstr* instr, |
+ InstanceCallComp* comp); |
+ bool TryInlineInstanceSetter(BindInstr* instr, InstanceCallComp* comp); |
- bool TryInlineInstanceMethod(InstanceCallInstr* call); |
+ bool TryInlineInstanceMethod(BindInstr* instr, InstanceCallComp* comp); |
- void AddCheckClass(InstanceCallInstr* call, Value* value); |
+ void AddCheckClass(BindInstr* instr, InstanceCallComp* comp, Value* value); |
- void InsertAfter(Instruction* instr, |
- Definition* defn, |
- Environment* env, |
- Definition::UseKind use_kind); |
+ BindInstr* InsertAfter(Instruction* instr, |
+ Computation* comp, |
+ Environment* env, |
+ BindInstr::UseKind use_kind); |
void InsertConversionsFor(Definition* def); |
@@ -101,19 +110,19 @@ class FlowGraphTypePropagator : public FlowGraphVisitor { |
void PropagateTypes(); |
- private: |
- virtual void VisitBlocks(); |
- |
- virtual void VisitAssertAssignable(AssertAssignableInstr* instr); |
- virtual void VisitAssertBoolean(AssertBooleanInstr* instr); |
- virtual void VisitInstanceOf(InstanceOfInstr* instr); |
+ virtual void VisitAssertAssignable(AssertAssignableComp* comp, |
+ BindInstr* instr); |
+ virtual void VisitAssertBoolean(AssertBooleanComp* comp, BindInstr* instr); |
+ virtual void VisitInstanceOf(InstanceOfComp* comp, BindInstr* instr); |
virtual void VisitGraphEntry(GraphEntryInstr* graph_entry); |
virtual void VisitJoinEntry(JoinEntryInstr* join_entry); |
+ virtual void VisitBind(BindInstr* bind); |
virtual void VisitPhi(PhiInstr* phi); |
virtual void VisitParameter(ParameterInstr* param); |
virtual void VisitPushArgument(PushArgumentInstr* bind); |
+ private: |
const ParsedFunction& parsed_function_; |
bool still_changing_; |
DISALLOW_COPY_AND_ASSIGN(FlowGraphTypePropagator); |
@@ -129,7 +138,7 @@ class DominatorBasedCSE : public AllStatic { |
private: |
static void OptimizeRecursive( |
BlockEntryInstr* entry, |
- DirectChainedHashMap<Definition*>* map); |
+ DirectChainedHashMap<BindInstr*>* map); |
}; |