Index: runtime/vm/flow_graph_optimizer.h |
=================================================================== |
--- runtime/vm/flow_graph_optimizer.h (revision 11221) |
+++ runtime/vm/flow_graph_optimizer.h (working copy) |
@@ -11,6 +11,7 @@ |
namespace dart { |
template <typename T> class GrowableArray; |
+template <typename T> class DirectChainedHashMap; |
class FlowGraphOptimizer : public FlowGraphVisitor { |
public: |
@@ -105,17 +106,16 @@ |
}; |
-class LocalCSE : public ValueObject { |
+// A simple common subexpression elimination based |
+// on the dominator tree. |
+class DominatorBasedCSE : public AllStatic { |
public: |
- explicit LocalCSE(const FlowGraph& flow_graph) |
- : blocks_(flow_graph.reverse_postorder()) { } |
+ static void Optimize(BlockEntryInstr* graph_entry); |
- void Optimize(); |
- |
private: |
- const GrowableArray<BlockEntryInstr*>& blocks_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LocalCSE); |
+ static void OptimizeRecursive( |
+ BlockEntryInstr* entry, |
+ DirectChainedHashMap<BindInstr*>* map); |
}; |