Index: src/full-codegen/arm64/full-codegen-arm64.cc |
diff --git a/src/full-codegen/arm64/full-codegen-arm64.cc b/src/full-codegen/arm64/full-codegen-arm64.cc |
index fbd653e9eccb575d1a2c2241cabd923323f65dbe..6d1ed37efff283cbaa3954d393f6b2119c0d06e7 100644 |
--- a/src/full-codegen/arm64/full-codegen-arm64.cc |
+++ b/src/full-codegen/arm64/full-codegen-arm64.cc |
@@ -3751,11 +3751,10 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
// looks at its pos(). Is it possible to do something more efficient here, |
// perhaps using Adr? |
__ Bind(&continuation); |
- // When we arrive here, the stack top is the resume mode and |
- // result_register() holds the input value (the argument given to the |
- // respective resume operation). |
+ // When we arrive here, x0 holds the generator object. |
__ RecordGeneratorContinuation(); |
- __ Pop(x1); |
+ __ Ldr(x1, FieldMemOperand(x0, JSGeneratorObject::kResumeModeOffset)); |
+ __ Ldr(x0, FieldMemOperand(x0, JSGeneratorObject::kInputOffset)); |
STATIC_ASSERT(JSGeneratorObject::kNext < JSGeneratorObject::kReturn); |
STATIC_ASSERT(JSGeneratorObject::kThrow > JSGeneratorObject::kReturn); |
__ Cmp(x1, Operand(Smi::FromInt(JSGeneratorObject::kReturn))); |