Index: src/full-codegen/x64/full-codegen-x64.cc |
diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc |
index 94204f917bb026afb469a1f2214803a105b64fe2..24c0fac9c361c72f080f15c1a5bd312d8e959908 100644 |
--- a/src/full-codegen/x64/full-codegen-x64.cc |
+++ b/src/full-codegen/x64/full-codegen-x64.cc |
@@ -1785,11 +1785,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). |
__ RecordGeneratorContinuation(); |
- __ Pop(rbx); |
+ // When we arrive here, rax holds the generator object. |
+ __ movp(rbx, FieldOperand(rax, JSGeneratorObject::kResumeModeOffset)); |
+ __ movp(rax, FieldOperand(rax, JSGeneratorObject::kInputOffset)); |
STATIC_ASSERT(JSGeneratorObject::kNext < JSGeneratorObject::kReturn); |
STATIC_ASSERT(JSGeneratorObject::kThrow > JSGeneratorObject::kReturn); |
__ SmiCompare(rbx, Smi::FromInt(JSGeneratorObject::kReturn)); |