| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 5aebadaef36b96eb101224281b940ee4b6ac872f..479069be2c7b9f7dd79ce8d3a5d986477ae660d8 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -145,6 +145,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.
|
|
|
| @@ -165,6 +166,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.
|
| @@ -280,7 +282,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));
|
| @@ -291,7 +293,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());
|
| @@ -342,7 +344,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.
|
| @@ -2958,9 +2960,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());
|
|
|