| Index: src/compiler/instruction-selector.cc
|
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
|
| index e8a52a61e12213577b48711ba768ad36ac117252..f0c72653e816bd3073022e22aee3c2000303b4a6 100644
|
| --- a/src/compiler/instruction-selector.cc
|
| +++ b/src/compiler/instruction-selector.cc
|
| @@ -503,6 +503,17 @@ void InstructionSelector::VisitControl(BasicBlock* block) {
|
| switch (block->control()) {
|
| case BasicBlock::kGoto:
|
| return VisitGoto(block->SuccessorAt(0));
|
| + case BasicBlock::kCall: {
|
| + DCHECK_EQ(IrOpcode::kCall, input->opcode());
|
| + BasicBlock* success = block->SuccessorAt(0);
|
| + BasicBlock* exception = block->SuccessorAt(1);
|
| + // SSA deconstruction requires targets of branches not to have phis.
|
| + // Edge split form guarantees this property, but is more strict.
|
| + CheckNoPhis(success);
|
| + CheckNoPhis(exception);
|
| + // TODO(mstarzinger): Record location of {exception} in {handler_table}.
|
| + return VisitCall(input), VisitGoto(success);
|
| + }
|
| case BasicBlock::kBranch: {
|
| DCHECK_EQ(IrOpcode::kBranch, input->opcode());
|
| BasicBlock* tbranch = block->SuccessorAt(0);
|
| @@ -700,6 +711,8 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kBranch:
|
| case IrOpcode::kIfTrue:
|
| case IrOpcode::kIfFalse:
|
| + case IrOpcode::kIfException:
|
| + case IrOpcode::kIfSuccess:
|
| case IrOpcode::kSwitch:
|
| case IrOpcode::kCase:
|
| case IrOpcode::kEffectPhi:
|
|
|