Index: src/crankshaft/arm64/lithium-codegen-arm64.cc |
diff --git a/src/crankshaft/arm64/lithium-codegen-arm64.cc b/src/crankshaft/arm64/lithium-codegen-arm64.cc |
index a7bb5d35dd2c9a6260158c4a7c237eb9c6c54e8f..363d3dc129e788096565375514ec2452aaefd99b 100644 |
--- a/src/crankshaft/arm64/lithium-codegen-arm64.cc |
+++ b/src/crankshaft/arm64/lithium-codegen-arm64.cc |
@@ -574,19 +574,20 @@ bool LCodeGen::GeneratePrologue() { |
info()->set_prologue_offset(masm_->pc_offset()); |
if (NeedsEagerFrame()) { |
if (info()->IsStub()) { |
- __ StubPrologue(); |
+ __ StubPrologue( |
+ StackFrame::STUB, |
+ GetStackSlotCount() + TypedFrameConstants::kFixedSlotCount); |
} else { |
__ Prologue(info()->GeneratePreagedPrologue()); |
+ // Reserve space for the stack slots needed by the code. |
+ int slots = GetStackSlotCount(); |
+ if (slots > 0) { |
+ __ Claim(slots, kPointerSize); |
+ } |
} |
frame_is_built_ = true; |
} |
- // Reserve space for the stack slots needed by the code. |
- int slots = GetStackSlotCount(); |
- if (slots > 0) { |
- __ Claim(slots, kPointerSize); |
- } |
- |
if (info()->saves_caller_doubles()) { |
SaveCallerDoubles(); |
} |
@@ -708,11 +709,11 @@ bool LCodeGen::GenerateDeferredCode() { |
DCHECK(!frame_is_built_); |
DCHECK(info()->IsStub()); |
frame_is_built_ = true; |
- __ Push(lr, fp, cp); |
+ __ Push(lr, fp); |
__ Mov(fp, Smi::FromInt(StackFrame::STUB)); |
__ Push(fp); |
__ Add(fp, __ StackPointer(), |
- StandardFrameConstants::kFixedFrameSizeFromFp); |
+ TypedFrameConstants::kFixedFrameSizeFromFp); |
Comment(";;; Deferred code"); |
} |
@@ -721,7 +722,7 @@ bool LCodeGen::GenerateDeferredCode() { |
if (NeedsDeferredFrame()) { |
Comment(";;; Destroy frame"); |
DCHECK(frame_is_built_); |
- __ Pop(xzr, cp, fp, lr); |
+ __ Pop(xzr, fp, lr); |
frame_is_built_ = false; |
} |
@@ -1570,8 +1571,8 @@ void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { |
__ Ldr(previous_fp, |
MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); |
- __ Ldr(result, |
- MemOperand(previous_fp, StandardFrameConstants::kContextOffset)); |
+ __ Ldr(result, MemOperand(previous_fp, |
+ CommonFrameConstants::kContextOrFrameTypeOffset)); |
__ Cmp(result, Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); |
__ Csel(result, fp, previous_fp, ne); |
} |