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()); |