| Index: src/arm/builtins-arm.cc
|
| diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc
|
| index ae50d7965bd663d8e53792515d231e873d025032..7ae29242b2e48d68d5a96cd40abe0ebab610a48a 100644
|
| --- a/src/arm/builtins-arm.cc
|
| +++ b/src/arm/builtins-arm.cc
|
| @@ -844,7 +844,7 @@ void Builtins::Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm) {
|
|
|
| // Perform prologue operations usually performed by the young code stub.
|
| __ stm(db_w, sp, r1.bit() | cp.bit() | fp.bit() | lr.bit());
|
| - __ add(fp, sp, Operand(2 * kPointerSize));
|
| + __ add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
|
|
| // Jump to point after the code-age stub.
|
| __ add(r0, r0, Operand(kNoCodeAgeSequenceLength * Assembler::kInstrSize));
|
| @@ -857,7 +857,8 @@ void Builtins::Generate_MarkCodeAsExecutedTwice(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void Builtins::Generate_NotifyStubFailure(MacroAssembler* masm) {
|
| +static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
| + SaveFPRegsMode save_doubles) {
|
| {
|
| FrameScope scope(masm, StackFrame::INTERNAL);
|
|
|
| @@ -866,7 +867,7 @@ void Builtins::Generate_NotifyStubFailure(MacroAssembler* masm) {
|
| // registers.
|
| __ stm(db_w, sp, kJSCallerSaved | kCalleeSaved);
|
| // Pass the function and deoptimization type to the runtime system.
|
| - __ CallRuntime(Runtime::kNotifyStubFailure, 0);
|
| + __ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
| __ ldm(ia_w, sp, kJSCallerSaved | kCalleeSaved);
|
| }
|
|
|
| @@ -875,6 +876,16 @@ void Builtins::Generate_NotifyStubFailure(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| +void Builtins::Generate_NotifyStubFailure(MacroAssembler* masm) {
|
| + Generate_NotifyStubFailureHelper(masm, kDontSaveFPRegs);
|
| +}
|
| +
|
| +
|
| +void Builtins::Generate_NotifyStubFailureSaveDoubles(MacroAssembler* masm) {
|
| + Generate_NotifyStubFailureHelper(masm, kSaveFPRegs);
|
| +}
|
| +
|
| +
|
| static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
| Deoptimizer::BailoutType type) {
|
| {
|
| @@ -1177,11 +1188,13 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
|
|
|
| void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
| - const int kIndexOffset = -5 * kPointerSize;
|
| - const int kLimitOffset = -4 * kPointerSize;
|
| - const int kArgsOffset = 2 * kPointerSize;
|
| - const int kRecvOffset = 3 * kPointerSize;
|
| - const int kFunctionOffset = 4 * kPointerSize;
|
| + const int kIndexOffset =
|
| + StandardFrameConstants::kExpressionsOffset - (2 * kPointerSize);
|
| + const int kLimitOffset =
|
| + StandardFrameConstants::kExpressionsOffset - (1 * kPointerSize);
|
| + const int kArgsOffset = 2 * kPointerSize;
|
| + const int kRecvOffset = 3 * kPointerSize;
|
| + const int kFunctionOffset = 4 * kPointerSize;
|
|
|
| {
|
| FrameScope frame_scope(masm, StackFrame::INTERNAL);
|
| @@ -1341,7 +1354,8 @@ static void EnterArgumentsAdaptorFrame(MacroAssembler* masm) {
|
| __ SmiTag(r0);
|
| __ mov(r4, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
|
| __ stm(db_w, sp, r0.bit() | r1.bit() | r4.bit() | fp.bit() | lr.bit());
|
| - __ add(fp, sp, Operand(3 * kPointerSize));
|
| + __ add(fp, sp,
|
| + Operand(StandardFrameConstants::kFixedFrameSizeFromFp + kPointerSize));
|
| }
|
|
|
|
|
| @@ -1351,7 +1365,8 @@ static void LeaveArgumentsAdaptorFrame(MacroAssembler* masm) {
|
| // -----------------------------------
|
| // Get the number of arguments passed (as a smi), tear down the frame and
|
| // then tear down the parameters.
|
| - __ ldr(r1, MemOperand(fp, -3 * kPointerSize));
|
| + __ ldr(r1, MemOperand(fp, -(StandardFrameConstants::kFixedFrameSizeFromFp +
|
| + kPointerSize)));
|
| __ mov(sp, fp);
|
| __ ldm(ia_w, sp, fp.bit() | lr.bit());
|
| __ add(sp, sp, Operand::PointerOffsetFromSmiKey(r1));
|
| @@ -1438,7 +1453,9 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
|
| // r3: code entry to call
|
| __ LoadRoot(ip, Heap::kUndefinedValueRootIndex);
|
| __ sub(r2, fp, Operand(r2, LSL, kPointerSizeLog2));
|
| - __ sub(r2, r2, Operand(4 * kPointerSize)); // Adjust for frame.
|
| + // Adjust for frame.
|
| + __ sub(r2, r2, Operand(StandardFrameConstants::kFixedFrameSizeFromFp +
|
| + 2 * kPointerSize));
|
|
|
| Label fill;
|
| __ bind(&fill);
|
|
|