| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index b5cebbe327e10f9612bfd8cdee581ed7fc80b0d2..a3bd9fde0e8f67c8552f6fe34698b2a6efd34821 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -804,6 +804,28 @@ void HGraphBuilder::IfBuilder::CaptureContinuation(
|
| }
|
|
|
|
|
| +void HGraphBuilder::IfBuilder::JoinContinuation(HIfContinuation* continuation) {
|
| + ASSERT(!finished_);
|
| + ASSERT(!captured_);
|
| + HBasicBlock* true_block = last_true_block_ == NULL
|
| + ? first_true_block_
|
| + : last_true_block_;
|
| + HBasicBlock* false_block = did_else_ && (first_false_block_ != NULL)
|
| + ? builder_->current_block()
|
| + : first_false_block_;
|
| + if (true_block != NULL && !true_block->IsFinished()) {
|
| + ASSERT(continuation->IsTrueReachable());
|
| + true_block->GotoNoSimulate(continuation->true_branch());
|
| + }
|
| + if (false_block != NULL && !false_block->IsFinished()) {
|
| + ASSERT(continuation->IsFalseReachable());
|
| + false_block->GotoNoSimulate(continuation->false_branch());
|
| + }
|
| + captured_ = true;
|
| + End();
|
| +}
|
| +
|
| +
|
| void HGraphBuilder::IfBuilder::Then() {
|
| ASSERT(!captured_);
|
| ASSERT(!finished_);
|
|
|