Chromium Code Reviews| 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(); |
|
ulan
2013/12/18 15:06:56
Ensure that there are no constant pool accesses be
rmcilroy
2013/12/19 11:08:25
Ditto.
|
| } |
| // 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()); |