Index: src/full-codegen/arm/full-codegen-arm.cc |
diff --git a/src/full-codegen/arm/full-codegen-arm.cc b/src/full-codegen/arm/full-codegen-arm.cc |
index c0385042871e5ff1ca87fbce4eab3e11031fc0e6..6c7b9dd9fd3456c9153f9df61c08871a220fc56a 100644 |
--- a/src/full-codegen/arm/full-codegen-arm.cc |
+++ b/src/full-codegen/arm/full-codegen-arm.cc |
@@ -1844,11 +1844,10 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
__ jmp(&suspend); |
__ 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, r0 holds the generator object. |
__ RecordGeneratorContinuation(); |
- __ pop(r1); |
+ __ ldr(r1, FieldMemOperand(r0, JSGeneratorObject::kResumeModeOffset)); |
+ __ ldr(r0, FieldMemOperand(r0, JSGeneratorObject::kInputOffset)); |
STATIC_ASSERT(JSGeneratorObject::kNext < JSGeneratorObject::kReturn); |
STATIC_ASSERT(JSGeneratorObject::kThrow > JSGeneratorObject::kReturn); |
__ cmp(r1, Operand(Smi::FromInt(JSGeneratorObject::kReturn))); |