Chromium Code Reviews| Index: src/compiler/control-builders.cc |
| diff --git a/src/compiler/control-builders.cc b/src/compiler/control-builders.cc |
| index 6905ef589ff56c11b18ac6717969d726aee56577..dc9d7b3eca96210d27390530895d4c1c8b87f41f 100644 |
| --- a/src/compiler/control-builders.cc |
| +++ b/src/compiler/control-builders.cc |
| @@ -36,6 +36,7 @@ void LoopBuilder::BeginLoop(BitVector* assigned, bool is_osr) { |
| loop_environment_ = environment()->CopyForLoop(assigned, is_osr); |
| continue_environment_ = environment()->CopyAsUnreachable(); |
| break_environment_ = environment()->CopyAsUnreachable(); |
| + assigned_ = assigned; |
| } |
| @@ -60,6 +61,7 @@ void LoopBuilder::EndBody() { |
| void LoopBuilder::EndLoop() { |
| loop_environment_->Merge(environment()); |
| set_environment(break_environment_); |
| + ExitLoop(); |
| } |
| @@ -82,6 +84,11 @@ void LoopBuilder::BreakWhen(Node* condition) { |
| control_if.End(); |
| } |
| +void LoopBuilder::ExitLoop(Node** extra_value_to_rename) { |
| + if (environment()->IsMarkedAsUnreachable()) return; |
|
Michael Starzinger
2016/07/14 12:13:36
Please move the unreachability check into Environm
Jarin
2016/07/14 12:51:34
Done.
|
| + builder_->BuildLoopExit(loop_environment_->GetControlDependency(), assigned_, |
| + extra_value_to_rename); |
| +} |
| void SwitchBuilder::BeginSwitch() { |
| body_environment_ = environment()->CopyAsUnreachable(); |