Chromium Code Reviews| Index: src/hydrogen.cc |
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
| index 57ea17313b2533e9cda72621789279b39aba428f..084a3f6fb37ba632c81f24177b5192b804d9e793 100644 |
| --- a/src/hydrogen.cc |
| +++ b/src/hydrogen.cc |
| @@ -3087,7 +3087,7 @@ bool HOptimizedGraphBuilder::BuildGraph() { |
| type_info->set_inlined_type_change_checksum(composite_checksum); |
| // Perform any necessary OSR-specific cleanups or changes to the graph. |
| - osr_->FinishGraph(); |
| + osr()->FinishGraph(); |
| return true; |
| } |
| @@ -3670,7 +3670,7 @@ void HOptimizedGraphBuilder::VisitDoWhileStatement(DoWhileStatement* stmt) { |
| ASSERT(current_block() != NULL); |
| ASSERT(current_block()->HasPredecessor()); |
| ASSERT(current_block() != NULL); |
| - HBasicBlock* loop_entry = osr_->BuildPossibleOsrLoopEntry(stmt); |
| + HBasicBlock* loop_entry = BuildLoopEntry(stmt); |
| BreakAndContinueInfo break_info(stmt); |
| CHECK_BAILOUT(VisitLoopBody(stmt, loop_entry, &break_info)); |
| @@ -3709,7 +3709,7 @@ void HOptimizedGraphBuilder::VisitWhileStatement(WhileStatement* stmt) { |
| ASSERT(current_block() != NULL); |
| ASSERT(current_block()->HasPredecessor()); |
| ASSERT(current_block() != NULL); |
| - HBasicBlock* loop_entry = osr_->BuildPossibleOsrLoopEntry(stmt); |
| + HBasicBlock* loop_entry = BuildLoopEntry(stmt); |
| // If the condition is constant true, do not generate a branch. |
| HBasicBlock* loop_successor = NULL; |
| @@ -3751,7 +3751,7 @@ void HOptimizedGraphBuilder::VisitForStatement(ForStatement* stmt) { |
| CHECK_ALIVE(Visit(stmt->init())); |
| } |
| ASSERT(current_block() != NULL); |
| - HBasicBlock* loop_entry = osr_->BuildPossibleOsrLoopEntry(stmt); |
| + HBasicBlock* loop_entry = BuildLoopEntry(stmt); |
| HBasicBlock* loop_successor = NULL; |
| if (stmt->cond() != NULL) { |
| @@ -3834,7 +3834,7 @@ void HOptimizedGraphBuilder::VisitForInStatement(ForInStatement* stmt) { |
| HForInCacheArray::cast(array)->set_index_cache( |
| HForInCacheArray::cast(index_cache)); |
| - HBasicBlock* loop_entry = osr_->BuildPossibleOsrLoopEntry(stmt); |
| + HBasicBlock* loop_entry = BuildLoopEntry(stmt); |
| HValue* index = environment()->ExpressionStackAt(0); |
| HValue* limit = environment()->ExpressionStackAt(1); |
| @@ -8621,6 +8621,24 @@ void HOptimizedGraphBuilder::VisitDeclarations( |
| } |
| +// Build a new loop header block and set it as the current block. |
| +HBasicBlock *HOptimizedGraphBuilder::BuildLoopEntry() { |
|
Michael Starzinger
2013/09/27 13:26:22
nit: Asterisk sticks to the left.
mvstanton
2013/09/27 13:31:43
Done.
|
| + HBasicBlock* loop_entry = CreateLoopHeaderBlock(); |
| + current_block()->Goto(loop_entry); |
| + set_current_block(loop_entry); |
| + return loop_entry; |
| +} |
| + |
| + |
| +HBasicBlock* HOptimizedGraphBuilder::BuildLoopEntry( |
|
Michael Starzinger
2013/09/27 13:26:22
nit: See comment in hydrogen.h about placement of
mvstanton
2013/09/27 13:31:43
Done.
|
| + IterationStatement* statement) { |
| + HBasicBlock* loop_entry = osr()->HasOsrEntryAt(statement) |
| + ? osr()->BuildOsrLoopEntry(statement) |
| + : BuildLoopEntry(); |
| + return loop_entry; |
| +} |
| + |
| + |
| void HOptimizedGraphBuilder::VisitVariableDeclaration( |
| VariableDeclaration* declaration) { |
| VariableProxy* proxy = declaration->proxy(); |