Index: src/arm64/full-codegen-arm64.cc |
diff --git a/src/arm64/full-codegen-arm64.cc b/src/arm64/full-codegen-arm64.cc |
index 015ec188cd8164f4a2f5d2544f462f11f7d11caa..a0e3972aa9214032e7e1dedad9751b6b3f424459 100644 |
--- a/src/arm64/full-codegen-arm64.cc |
+++ b/src/arm64/full-codegen-arm64.cc |
@@ -150,6 +150,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. |
@@ -4999,7 +5000,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 |
@@ -5191,7 +5192,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, |