Index: src/arm64/full-codegen-arm64.cc |
diff --git a/src/arm64/full-codegen-arm64.cc b/src/arm64/full-codegen-arm64.cc |
index 265f75f97c4fd994e0f00373c5d21d89d9417105..7a44adb846a505bc0b18c24ebd4a6b685de66fb0 100644 |
--- a/src/arm64/full-codegen-arm64.cc |
+++ b/src/arm64/full-codegen-arm64.cc |
@@ -149,6 +149,7 @@ void FullCodeGenerator::Generate() { |
// Add(fp, jssp, 2 * kPointerSize); |
info->set_prologue_offset(masm_->pc_offset()); |
__ Prologue(info->IsCodePreAgingActive()); |
+ __ Push(FeedbackVector()); |
info->AddNoFrameRange(0, masm_->pc_offset()); |
// Reserve space on the stack for locals. |
@@ -4951,7 +4952,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
__ Mov(x1, cp); |
__ RecordWriteField(x0, JSGeneratorObject::kContextOffset, x1, x2, |
kLRHasBeenSaved, kDontSaveFPRegs); |
- __ Add(x1, fp, StandardFrameConstants::kExpressionsOffset); |
+ __ Add(x1, fp, JavaScriptFrameConstants::kLocal0Offset); |
__ Cmp(__ StackPointer(), x1); |
__ B(eq, &post_runtime); |
__ Push(x0); // generator object |
@@ -5143,7 +5144,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator, |
fp, // Caller's frame pointer. |
cp, // Callee's context. |
function); // Callee's JS Function. |
- __ Add(fp, __ StackPointer(), kPointerSize * 2); |
+ |
+ // Callee's type feedback vector. |
+ __ Ldr(x10, FieldMemOperand(function, JSFunction::kSharedFunctionInfoOffset)); |
+ __ Ldr(x10, FieldMemOperand(x10, SharedFunctionInfo::kFeedbackVectorOffset)); |
+ __ Push(x10); |
+ |
+ __ Add(fp, __ StackPointer(), |
+ JavaScriptFrameConstants::kUnoptimizedFixedFrameSizeFromFp); |
// Load and untag the operand stack size. |
__ Ldr(x10, FieldMemOperand(generator_object, |