| Index: src/arm/full-codegen-arm.cc
|
| diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc
|
| index 88421af6f0a5404aa910e153eb55ec3769d74531..414bcd0c372aa276016ad5a6e7ba1d111e378738 100644
|
| --- a/src/arm/full-codegen-arm.cc
|
| +++ b/src/arm/full-codegen-arm.cc
|
| @@ -119,6 +119,7 @@ class JumpPatchSite BASE_EMBEDDED {
|
| // The live registers are:
|
| // o r1: the JS function object being called (i.e., ourselves)
|
| // o cp: our context
|
| +// o pp: our caller's constant pool pointer (if FLAG_enable_ool_constant_pool)
|
| // o fp: our caller's frame pointer
|
| // o sp: stack pointer
|
| // o lr: return address
|
| @@ -436,11 +437,9 @@ void FullCodeGenerator::EmitReturnSequence() {
|
| // TODO(svenpanne) The code below is sometimes 4 words, sometimes 5!
|
| PredictableCodeSizeScope predictable(masm_, -1);
|
| __ RecordJSReturn();
|
| - masm_->mov(sp, fp);
|
| - int no_frame_start = masm_->pc_offset();
|
| - masm_->ldm(ia_w, sp, fp.bit() | lr.bit());
|
| - masm_->add(sp, sp, Operand(sp_delta));
|
| - masm_->Jump(lr);
|
| + int no_frame_start = masm_->LeaveFrame(StackFrame::JAVA_SCRIPT);
|
| + __ add(sp, sp, Operand(sp_delta));
|
| + __ Jump(lr);
|
| info_->AddNoFrameRange(no_frame_start, masm_->pc_offset());
|
| }
|
|
|
| @@ -2169,11 +2168,12 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
| __ bind(&resume_frame);
|
| // lr = return address.
|
| // fp = caller's frame pointer.
|
| + // pp = caller's constant pool (if FLAG_enable_ool_constant_pool),
|
| // cp = callee's context,
|
| // r4 = callee's JS function.
|
| - __ Push(lr, fp, cp, r4);
|
| + __ PushFixedFrame(r4);
|
| // Adjust FP to point to saved FP.
|
| - __ add(fp, sp, Operand(2 * kPointerSize));
|
| + __ add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
|
|
| // Load the operand stack size.
|
| __ ldr(r3, FieldMemOperand(r1, JSGeneratorObject::kOperandStackOffset));
|
|
|