Index: src/compiler/arm/code-generator-arm.cc |
diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc |
index 8e1dcf8e4902fe840b5729e7fdff857c8ff50d2d..961cfb40526dcbf853e006811c70bb4d1b1e0dd5 100644 |
--- a/src/compiler/arm/code-generator-arm.cc |
+++ b/src/compiler/arm/code-generator-arm.cc |
@@ -533,6 +533,13 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
__ mov(i.OutputRegister(), fp); |
DCHECK_EQ(LeaveCC, i.OutputSBit()); |
break; |
+ case kArchParentFramePointer: |
+ if (frame_access_state()->frame()->needs_frame()) { |
+ __ ldr(i.OutputRegister(), MemOperand(fp, 0)); |
+ } else { |
+ __ mov(i.OutputRegister(), fp); |
+ } |
+ break; |
case kArchTruncateDoubleToI: |
__ TruncateDoubleToI(i.OutputRegister(), i.InputFloat64Register(0)); |
DCHECK_EQ(LeaveCC, i.OutputSBit()); |