Chromium Code Reviews| Index: runtime/vm/flow_graph_type_propagator.h |
| diff --git a/runtime/vm/flow_graph_type_propagator.h b/runtime/vm/flow_graph_type_propagator.h |
| index f01dc5f2dd6af2a3e3dcdb9cddf85792749c8602..a086186d519b4e1e9b35eba15c8ad839da9ac14e 100644 |
| --- a/runtime/vm/flow_graph_type_propagator.h |
| +++ b/runtime/vm/flow_graph_type_propagator.h |
| @@ -18,6 +18,9 @@ class FlowGraphTypePropagator : public FlowGraphVisitor { |
| private: |
| void PropagateRecursive(BlockEntryInstr* block); |
| + void HandleBranchOnNull(BlockEntryInstr* block); |
| + |
| + void RollbackTo(intptr_t rollback_point); |
| void VisitValue(Value* value); |
| @@ -25,6 +28,7 @@ class FlowGraphTypePropagator : public FlowGraphVisitor { |
| virtual void VisitCheckSmi(CheckSmiInstr* instr); |
| virtual void VisitCheckClass(CheckClassInstr* instr); |
| + |
|
Kevin Millikin (Google)
2013/03/12 12:14:56
Huh? I liked it better before.
Vyacheslav Egorov (Google)
2013/03/12 16:54:40
Done.
|
| // Current reaching type of the definition. Valid only during dominator tree |
| // traversal. |
| CompileType* TypeOf(Definition* def); |
| @@ -35,6 +39,8 @@ class FlowGraphTypePropagator : public FlowGraphVisitor { |
| // Mark definition as having given class id in all dominated instructions. |
| void SetCid(Definition* value, intptr_t cid); |
| + void MarkNonNullable(Definition* value); |
| + |
| void AddToWorklist(Definition* defn); |
| Definition* RemoveLastFromWorklist(); |
| @@ -44,6 +50,8 @@ class FlowGraphTypePropagator : public FlowGraphVisitor { |
| FlowGraph* flow_graph_; |
| + GrowableArray<bool> visited_; |
|
Kevin Millikin (Google)
2013/03/12 12:14:56
BitVector?
Vyacheslav Egorov (Google)
2013/03/12 16:54:40
Yeah, that was stupid :-)
|
| + |
| // Mapping between SSA values and their current reaching types. Valid |
| // only during dominator tree traversal. |
| GrowableArray<CompileType*> types_; |