Index: src/compiler/instruction-selector.cc |
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc |
index 02732e7cbe572e07006f586ad30c66b2793e249d..655c7663879d8b157afce43e576d42193c366841 100644 |
--- a/src/compiler/instruction-selector.cc |
+++ b/src/compiler/instruction-selector.cc |
@@ -1077,6 +1077,8 @@ void InstructionSelector::VisitNode(Node* node) { |
return VisitLoadStackPointer(node); |
case IrOpcode::kLoadFramePointer: |
return VisitLoadFramePointer(node); |
+ case IrOpcode::kLoadParentFramePointer: |
+ return VisitLoadParentFramePointer(node); |
case IrOpcode::kCheckedLoad: { |
MachineRepresentation rep = |
CheckedLoadRepresentationOf(node->op()).representation(); |
@@ -1101,9 +1103,14 @@ void InstructionSelector::VisitLoadStackPointer(Node* node) { |
void InstructionSelector::VisitLoadFramePointer(Node* node) { |
OperandGenerator g(this); |
+ frame_->MarkNeedsFrame(); |
Emit(kArchFramePointer, g.DefineAsRegister(node)); |
} |
+void InstructionSelector::VisitLoadParentFramePointer(Node* node) { |
+ OperandGenerator g(this); |
+ Emit(kArchParentFramePointer, g.DefineAsRegister(node)); |
+} |
void InstructionSelector::EmitTableSwitch(const SwitchInfo& sw, |
InstructionOperand& index_operand) { |