| Index: src/compiler/instruction-selector.cc
|
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
|
| index c1d66ea345aec415ebe343757f62445a2da4fefb..89c2fe1e459f1110b61fbaa0e25bbc2dc0b2d104 100644
|
| --- a/src/compiler/instruction-selector.cc
|
| +++ b/src/compiler/instruction-selector.cc
|
| @@ -596,7 +596,6 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kIfTrue:
|
| case IrOpcode::kIfFalse:
|
| case IrOpcode::kIfSuccess:
|
| - case IrOpcode::kIfException:
|
| case IrOpcode::kSwitch:
|
| case IrOpcode::kIfValue:
|
| case IrOpcode::kIfDefault:
|
| @@ -604,6 +603,8 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kMerge:
|
| // No code needed for these graph artifacts.
|
| return;
|
| + case IrOpcode::kIfException:
|
| + return MarkAsReference(node), VisitIfException(node);
|
| case IrOpcode::kFinish:
|
| return MarkAsReference(node), VisitFinish(node);
|
| case IrOpcode::kParameter: {
|
| @@ -969,6 +970,16 @@ void InstructionSelector::VisitParameter(Node* node) {
|
| }
|
|
|
|
|
| +void InstructionSelector::VisitIfException(Node* node) {
|
| + OperandGenerator g(this);
|
| + Node* call = node->InputAt(0);
|
| + DCHECK_EQ(IrOpcode::kCall, call->opcode());
|
| + const CallDescriptor* descriptor = OpParameter<const CallDescriptor*>(call);
|
| + Emit(kArchNop, g.DefineAsLocation(node, descriptor->GetReturnLocation(0),
|
| + descriptor->GetReturnType(0)));
|
| +}
|
| +
|
| +
|
| void InstructionSelector::VisitOsrValue(Node* node) {
|
| OperandGenerator g(this);
|
| int index = OpParameter<int>(node);
|
|
|