| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 2919eb072aa852b92e11282f7a0cbdad057a68f2..6bbdcc90d759ef11076b733237e0ba7af5801374 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -143,6 +143,7 @@ bool LCodeGen::GeneratePrologue() {
|
|
|
| // r1: Callee's JS function.
|
| // cp: Callee's context.
|
| + // pp: Callee's constant pool pointer (if FLAG_enable_ool_constant_pool)
|
| // fp: Caller's frame pointer.
|
| // lr: Caller's pc.
|
|
|
| @@ -163,6 +164,7 @@ bool LCodeGen::GeneratePrologue() {
|
| __ Prologue(info()->IsStub() ? BUILD_STUB_FRAME : BUILD_FUNCTION_FRAME);
|
| frame_is_built_ = true;
|
| info_->AddNoFrameRange(0, masm_->pc_offset());
|
| + __ LoadConstantPoolPointerRegister();
|
| }
|
|
|
| // Reserve space for the stack slots needed by the code.
|
| @@ -278,7 +280,7 @@ bool LCodeGen::GenerateDeferredCode() {
|
| ASSERT(!frame_is_built_);
|
| ASSERT(info()->IsStub());
|
| frame_is_built_ = true;
|
| - __ stm(db_w, sp, cp.bit() | fp.bit() | lr.bit());
|
| + __ PushFixedFrame();
|
| __ mov(scratch0(), Operand(Smi::FromInt(StackFrame::STUB)));
|
| __ push(scratch0());
|
| __ add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
| @@ -289,7 +291,7 @@ bool LCodeGen::GenerateDeferredCode() {
|
| Comment(";;; Destroy frame");
|
| ASSERT(frame_is_built_);
|
| __ pop(ip);
|
| - __ ldm(ia_w, sp, cp.bit() | fp.bit() | lr.bit());
|
| + __ PopFixedFrame();
|
| frame_is_built_ = false;
|
| }
|
| __ jmp(code->exit());
|
| @@ -340,7 +342,7 @@ bool LCodeGen::GenerateDeoptJumpTable() {
|
| __ b(&needs_frame);
|
| } else {
|
| __ bind(&needs_frame);
|
| - __ stm(db_w, sp, cp.bit() | fp.bit() | lr.bit());
|
| + __ PushFixedFrame();
|
| // This variant of deopt can only be used with stubs. Since we don't
|
| // have a function pointer to install in the stack frame that we're
|
| // building, install a special marker there instead.
|
| @@ -2918,9 +2920,7 @@ void LCodeGen::DoReturn(LReturn* instr) {
|
| }
|
| int no_frame_start = -1;
|
| if (NeedsEagerFrame()) {
|
| - __ mov(sp, fp);
|
| - no_frame_start = masm_->pc_offset();
|
| - __ ldm(ia_w, sp, fp.bit() | lr.bit());
|
| + no_frame_start = masm_->LeaveFrame(StackFrame::JAVA_SCRIPT);
|
| }
|
| if (instr->has_constant_parameter_count()) {
|
| int parameter_count = ToInteger32(instr->constant_parameter_count());
|
|
|