Chromium Code Reviews| Index: src/hydrogen.cc |
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
| index 2f5fa20ec4c3024a854dccc912402e1f91d95b52..361f31b1a70db513770fff53c708498138206985 100644 |
| --- a/src/hydrogen.cc |
| +++ b/src/hydrogen.cc |
| @@ -1250,16 +1250,20 @@ void HStackCheckEliminator::Process() { |
| if (block->IsLoopHeader()) { |
| HBasicBlock* back_edge = block->loop_information()->GetLastBackEdge(); |
| HBasicBlock* dominator = back_edge; |
| - bool back_edge_dominated_by_call = false; |
| - while (dominator != block && !back_edge_dominated_by_call) { |
| + while (true) { |
| HInstruction* instr = dominator->first(); |
| while (instr != NULL && !back_edge_dominated_by_call) { |
|
fschneider
2011/06/20 12:18:59
Should be
while (instr != NULL) {
Søren Thygesen Gjesse
2011/06/20 12:27:48
Sorry about that - fixed.
|
| if (instr->IsCall()) { |
| RemoveStackCheck(back_edge); |
| - back_edge_dominated_by_call = true; |
| + break; |
| } |
| instr = instr->next(); |
| } |
| + |
| + // Done when the loop header is processed. |
| + if (dominator == block) break; |
| + |
| + // Move up the dominator chain. |
| dominator = dominator->dominator(); |
| } |
| } |