Commit ee26e273 authored by rmcilroy@chromium.org's avatar rmcilroy@chromium.org

[turbofan]: Fix TurboFan for out-of-line constant pool on Arm.

Use LeaveFrame so that the constant pool pointer register is correctly restored
when using the out-of-line constant pool.  Also clean up duplicate code in
builtins-arm.cc.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/469283002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 10b0c6d3
......@@ -1422,13 +1422,7 @@ static void LeaveArgumentsAdaptorFrame(MacroAssembler* masm) {
__ ldr(r1, MemOperand(fp, -(StandardFrameConstants::kFixedFrameSizeFromFp +
kPointerSize)));
if (FLAG_enable_ool_constant_pool) {
__ add(sp, fp, Operand(StandardFrameConstants::kConstantPoolOffset));
__ ldm(ia_w, sp, pp.bit() | fp.bit() | lr.bit());
} else {
__ mov(sp, fp);;
__ ldm(ia_w, sp, fp.bit() | lr.bit());
}
__ LeaveFrame(StackFrame::ARGUMENTS_ADAPTOR);
__ add(sp, sp, Operand::PointerOffsetFromSmiKey(r1));
__ add(sp, sp, Operand(kPointerSize)); // adjust for receiver
}
......
......@@ -665,12 +665,10 @@ void CodeGenerator::AssembleReturn() {
__ ldm(ia_w, sp, saves);
}
}
__ mov(sp, fp);
__ ldm(ia_w, sp, fp.bit() | lr.bit());
__ LeaveFrame(StackFrame::MANUAL);
__ Ret();
} else {
__ mov(sp, fp);
__ ldm(ia_w, sp, fp.bit() | lr.bit());
__ LeaveFrame(StackFrame::MANUAL);
int pop_count =
descriptor->IsJSFunctionCall() ? descriptor->ParameterCount() : 0;
__ Drop(pop_count);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment