Index: src/compiler/graph-reducer.h |
diff --git a/src/compiler/graph-reducer.h b/src/compiler/graph-reducer.h |
index e0e4f7a3d30b14b53f246efe8b3f5d221be17052..d54c3186c045c7197526c5fa7ddf4dbca1bb7f33 100644 |
--- a/src/compiler/graph-reducer.h |
+++ b/src/compiler/graph-reducer.h |
@@ -55,20 +55,39 @@ class Reducer { |
// Performs an iterative reduction of a node graph. |
class GraphReducer FINAL { |
public: |
- explicit GraphReducer(Graph* graph); |
+ GraphReducer(Graph* graph, Zone* zone); |
Graph* graph() const { return graph_; } |
- void AddReducer(Reducer* reducer) { reducers_.push_back(reducer); } |
+ void AddReducer(Reducer* reducer); |
// Reduce a single node. |
- void ReduceNode(Node* node); |
+ void ReduceNode(Node* const); |
// Reduce the whole graph. |
void ReduceGraph(); |
private: |
+ enum class State : uint8_t; |
+ |
+ // Reduce a single node. |
+ Reduction Reduce(Node* const); |
+ // Reduce the node on top of the stack. |
+ void ReduceTop(); |
+ |
+ // Node stack operations. |
+ void Pop(); |
+ void Push(Node* const); |
+ Node* Top() const; |
+ |
+ // Revisit queue operations. |
+ bool Recurse(Node* const); |
+ void Revisit(Node* const); |
+ |
Graph* graph_; |
ZoneVector<Reducer*> reducers_; |
+ ZoneStack<Node*> revisit_; |
+ ZoneStack<Node*> stack_; |
+ ZoneDeque<State> state_; |
DISALLOW_COPY_AND_ASSIGN(GraphReducer); |
}; |