| Index: src/crankshaft/mips/lithium-codegen-mips.cc
|
| diff --git a/src/crankshaft/mips/lithium-codegen-mips.cc b/src/crankshaft/mips/lithium-codegen-mips.cc
|
| index 414061d8e3682a843b07ec96f3e8dd0eb2714ea2..7eab6a6784386a7d44aace71bc56880426f3671f 100644
|
| --- a/src/crankshaft/mips/lithium-codegen-mips.cc
|
| +++ b/src/crankshaft/mips/lithium-codegen-mips.cc
|
| @@ -278,18 +278,15 @@ bool LCodeGen::GenerateDeferredCode() {
|
| DCHECK(!frame_is_built_);
|
| DCHECK(info()->IsStub());
|
| frame_is_built_ = true;
|
| - __ MultiPush(cp.bit() | fp.bit() | ra.bit());
|
| __ li(scratch0(), Operand(Smi::FromInt(StackFrame::STUB)));
|
| - __ push(scratch0());
|
| - __ Addu(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
| + __ PushCommonFrame(scratch0());
|
| Comment(";;; Deferred code");
|
| }
|
| code->Generate();
|
| if (NeedsDeferredFrame()) {
|
| Comment(";;; Destroy frame");
|
| DCHECK(frame_is_built_);
|
| - __ pop(at);
|
| - __ MultiPop(cp.bit() | fp.bit() | ra.bit());
|
| + __ PopCommonFrame(scratch0());
|
| frame_is_built_ = false;
|
| }
|
| __ jmp(code->exit());
|
| @@ -328,7 +325,7 @@ bool LCodeGen::GenerateJumpTable() {
|
| if (table_entry->needs_frame) {
|
| DCHECK(!info()->saves_caller_doubles());
|
| Comment(";;; call deopt with frame");
|
| - __ MultiPush(cp.bit() | fp.bit() | ra.bit());
|
| + __ PushCommonFrame();
|
| __ Call(&needs_frame);
|
| } else {
|
| __ Call(&call_deopt_entry);
|
| @@ -342,10 +339,9 @@ bool LCodeGen::GenerateJumpTable() {
|
| // 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.
|
| - DCHECK(info()->IsStub());
|
| __ li(at, Operand(Smi::FromInt(StackFrame::STUB)));
|
| __ push(at);
|
| - __ Addu(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
| + DCHECK(info()->IsStub());
|
| }
|
|
|
| Comment(";;; call deopt");
|
| @@ -2992,7 +2988,8 @@ void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) {
|
| // 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));
|
| + __ lw(result,
|
| + MemOperand(scratch, CommonFrameConstants::kContextOrFrameTypeOffset));
|
| __ Xor(temp, result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
|
|
|
| // Result is the frame pointer for the frame if not adapted and for the real
|
|
|