Chromium Code Reviews| Index: src/compiler/instruction-selector.cc |
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc |
| index 97fa9214f668524e81cd937681923b7ea1a6c1f4..20d09bb5bee8ce83ec314f8751444096c487dad6 100644 |
| --- a/src/compiler/instruction-selector.cc |
| +++ b/src/compiler/instruction-selector.cc |
| @@ -730,7 +730,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: |
| @@ -738,6 +737,8 @@ void InstructionSelector::VisitNode(Node* node) { |
| case IrOpcode::kMerge: |
| // No code needed for these graph artifacts. |
| return; |
| + case IrOpcode::kIfException: |
| + return VisitIfException(node); |
|
Benedikt Meurer
2015/03/10 09:42:08
MarkAsReference is missing.
Michael Starzinger
2015/03/31 11:58:44
Done.
|
| case IrOpcode::kFinish: |
| return MarkAsReference(node), VisitFinish(node); |
| case IrOpcode::kParameter: { |
| @@ -1042,6 +1043,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); |