| 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);
|
| };
|
|
|
|
|
|
|