From ee26e273cb4d03afe6336d97b96744f4e06e7ede Mon Sep 17 00:00:00 2001 From: "rmcilroy@chromium.org" Date: Fri, 15 Aug 2014 14:35:00 +0000 Subject: [PATCH] [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 --- src/arm/builtins-arm.cc | 8 +------- src/compiler/arm/code-generator-arm.cc | 6 ++---- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc index 60055a6..357137f 100644 --- a/src/arm/builtins-arm.cc +++ b/src/arm/builtins-arm.cc @@ -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 } diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc index a7c227f..cee0649 100644 --- a/src/compiler/arm/code-generator-arm.cc +++ b/src/compiler/arm/code-generator-arm.cc @@ -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); -- 2.7.4