Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 4b05db1d6a0e4138446501a636d67ccc392721c5..3d4196c0ad159c3abcea37f49d6738fb541eafa0 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. |
@@ -280,7 +281,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 +292,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 +343,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. |
@@ -2964,9 +2965,8 @@ 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()); |
+ __ LeaveFrame(StackFrame::JAVA_SCRIPT); |
} |
if (instr->has_constant_parameter_count()) { |
int parameter_count = ToInteger32(instr->constant_parameter_count()); |