| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index 94e8979ba3abe6d30842e7ffd0453af4a3ca38f4..f6f0c94aff72ba0f94b724a7be7f9b16e013df00 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -2651,16 +2651,20 @@ void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) {
|
| Register temp = scratch1();
|
| Register result = ToRegister(instr->result());
|
|
|
| - // Check if the calling frame is an arguments adaptor frame.
|
| - Label done, adapted;
|
| - __ lw(scratch, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
| - __ lw(result, MemOperand(scratch, StandardFrameConstants::kContextOffset));
|
| - __ Xor(temp, result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
|
| -
|
| - // Result is the frame pointer for the frame if not adapted and for the real
|
| - // frame below the adaptor frame if adapted.
|
| - __ Movn(result, fp, temp); // Move only if temp is not equal to zero (ne).
|
| - __ Movz(result, scratch, temp); // Move only if temp is equal to zero (eq).
|
| + if (instr->from_inlined()) {
|
| + __ Subu(result, sp, 2 * kPointerSize);
|
| + } else {
|
| + // Check if the calling frame is an arguments adaptor frame.
|
| + Label done, adapted;
|
| + __ lw(scratch, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
| + __ lw(result, MemOperand(scratch, StandardFrameConstants::kContextOffset));
|
| + __ Xor(temp, result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
|
| +
|
| + // Result is the frame pointer for the frame if not adapted and for the real
|
| + // frame below the adaptor frame if adapted.
|
| + __ Movn(result, fp, temp); // Move only if temp is not equal to zero (ne).
|
| + __ Movz(result, scratch, temp); // Move only if temp is equal to zero (eq).
|
| + }
|
| }
|
|
|
|
|
| @@ -2793,6 +2797,11 @@ void LCodeGen::DoPushArgument(LPushArgument* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoPop(LPop* instr) {
|
| + __ Drop(instr->count());
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoThisFunction(LThisFunction* instr) {
|
| Register result = ToRegister(instr->result());
|
| __ LoadHeapObject(result, instr->hydrogen()->closure());
|
|
|