| Index: src/hydrogen.h
|
| diff --git a/src/hydrogen.h b/src/hydrogen.h
|
| index 510ba70dd7108900c304a76b0544db330f304fd7..8d7780282c99b7afc20864106bf15806109e7601 100644
|
| --- a/src/hydrogen.h
|
| +++ b/src/hydrogen.h
|
| @@ -192,40 +192,13 @@ class HLoopInformation: public ZoneObject {
|
| };
|
|
|
|
|
| -class HSubgraph: public ZoneObject {
|
| - public:
|
| - explicit HSubgraph(HGraph* graph)
|
| - : graph_(graph),
|
| - entry_block_(NULL),
|
| - exit_block_(NULL) {
|
| - }
|
| -
|
| - HGraph* graph() const { return graph_; }
|
| - HBasicBlock* entry_block() const { return entry_block_; }
|
| - HBasicBlock* exit_block() const { return exit_block_; }
|
| - void set_exit_block(HBasicBlock* block) {
|
| - exit_block_ = block;
|
| - }
|
| -
|
| - void Initialize(HBasicBlock* block) {
|
| - ASSERT(entry_block_ == NULL);
|
| - entry_block_ = block;
|
| - exit_block_ = block;
|
| - }
|
| -
|
| - protected:
|
| - HGraph* graph_; // The graph this is a subgraph of.
|
| - HBasicBlock* entry_block_;
|
| - HBasicBlock* exit_block_;
|
| -};
|
| -
|
| -
|
| -class HGraph: public HSubgraph {
|
| +class HGraph: public ZoneObject {
|
| public:
|
| explicit HGraph(CompilationInfo* info);
|
|
|
| const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; }
|
| const ZoneList<HPhi*>* phi_list() const { return phi_list_; }
|
| + HBasicBlock* entry_block() const { return entry_block_; }
|
| HEnvironment* start_environment() const { return start_environment_; }
|
|
|
| void InitializeInferredTypes();
|
| @@ -295,12 +268,15 @@ class HGraph: public HSubgraph {
|
| void InsertRepresentationChangeForUse(HValue* value,
|
| HValue* use,
|
| Representation to);
|
| - void InsertRepresentationChanges(HValue* current);
|
| + void InsertRepresentationChangesForValue(HValue* current,
|
| + ZoneList<HValue*>* value_list,
|
| + ZoneList<Representation>* rep_list);
|
| void InferTypes(ZoneList<HValue*>* worklist);
|
| void InitializeInferredTypes(int from_inclusive, int to_inclusive);
|
| void CheckForBackEdge(HBasicBlock* block, HBasicBlock* successor);
|
|
|
| int next_block_id_;
|
| + HBasicBlock* entry_block_;
|
| HEnvironment* start_environment_;
|
| ZoneList<HBasicBlock*> blocks_;
|
| ZoneList<HValue*> values_;
|
| @@ -312,8 +288,6 @@ class HGraph: public HSubgraph {
|
| SetOncePointer<HConstant> constant_false_;
|
| SetOncePointer<HArgumentsObject> arguments_object_;
|
|
|
| - friend class HSubgraph;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(HGraph);
|
| };
|
|
|
| @@ -404,7 +378,7 @@ class HEnvironment: public ZoneObject {
|
| void ClearHistory() {
|
| pop_count_ = 0;
|
| push_count_ = 0;
|
| - assigned_variables_.Clear();
|
| + assigned_variables_.Rewind(0);
|
| }
|
|
|
| void SetValueAt(int index, HValue* value) {
|
| @@ -640,7 +614,7 @@ class HGraphBuilder: public AstVisitor {
|
| ast_context_(NULL),
|
| break_scope_(NULL),
|
| graph_(NULL),
|
| - current_subgraph_(NULL),
|
| + current_block_(NULL),
|
| inlined_count_(0) {
|
| // This is not initialized in the initializer list because the
|
| // constructor for the initial state relies on function_state_ == NULL
|
| @@ -652,14 +626,11 @@ class HGraphBuilder: public AstVisitor {
|
|
|
| // Simple accessors.
|
| HGraph* graph() const { return graph_; }
|
| - HSubgraph* subgraph() const { return current_subgraph_; }
|
| BreakAndContinueScope* break_scope() const { return break_scope_; }
|
| void set_break_scope(BreakAndContinueScope* head) { break_scope_ = head; }
|
|
|
| - HBasicBlock* current_block() const { return subgraph()->exit_block(); }
|
| - void set_current_block(HBasicBlock* block) {
|
| - subgraph()->set_exit_block(block);
|
| - }
|
| + HBasicBlock* current_block() const { return current_block_; }
|
| + void set_current_block(HBasicBlock* block) { current_block_ = block; }
|
| HEnvironment* environment() const {
|
| return current_block()->last_environment();
|
| }
|
| @@ -750,10 +721,6 @@ class HGraphBuilder: public AstVisitor {
|
| HBasicBlock* exit_block,
|
| HBasicBlock* continue_block);
|
|
|
| - void AddToSubgraph(HSubgraph* graph, ZoneList<Statement*>* stmts);
|
| - void AddToSubgraph(HSubgraph* graph, Statement* stmt);
|
| - void AddToSubgraph(HSubgraph* graph, Expression* expr);
|
| -
|
| HValue* Top() const { return environment()->Top(); }
|
| void Drop(int n) { environment()->Drop(n); }
|
| void Bind(Variable* var, HValue* value) { environment()->Bind(var, value); }
|
| @@ -791,7 +758,6 @@ class HGraphBuilder: public AstVisitor {
|
| #undef DECLARE_VISIT
|
|
|
| HBasicBlock* CreateBasicBlock(HEnvironment* env);
|
| - HSubgraph* CreateEmptySubgraph();
|
| HBasicBlock* CreateLoopHeaderBlock();
|
|
|
| // Helpers for flow graph construction.
|
| @@ -884,10 +850,6 @@ class HGraphBuilder: public AstVisitor {
|
| HValue* val,
|
| Expression* expr);
|
|
|
| - HCompare* BuildSwitchCompare(HSubgraph* subgraph,
|
| - HValue* switch_value,
|
| - CaseClause* clause);
|
| -
|
| HValue* BuildContextChainWalk(Variable* var);
|
|
|
| void AddCheckConstantFunction(Call* expr,
|
| @@ -910,7 +872,7 @@ class HGraphBuilder: public AstVisitor {
|
| BreakAndContinueScope* break_scope_;
|
|
|
| HGraph* graph_;
|
| - HSubgraph* current_subgraph_;
|
| + HBasicBlock* current_block_;
|
|
|
| int inlined_count_;
|
|
|
|
|