diff --git a/Userland/Libraries/LibJS/Runtime/GeneratorObject.cpp b/Userland/Libraries/LibJS/Runtime/GeneratorObject.cpp index bea7bd240c..843becbb12 100644 --- a/Userland/Libraries/LibJS/Runtime/GeneratorObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/GeneratorObject.cpp @@ -100,12 +100,17 @@ ThrowCompletionOr GeneratorObject::next_impl(VM& vm, GlobalObject& global bytecode_interpreter->accumulator() = js_undefined(); return throw_completion(value_to_throw.release_value()); } - bytecode_interpreter->accumulator() = next_argument.value_or(js_undefined()); Bytecode::RegisterWindow* frame = nullptr; if (m_frame.has_value()) frame = &m_frame.value(); + auto next_value = next_argument.value_or(js_undefined()); + if (frame) + frame->registers[0] = next_value; + else + bytecode_interpreter->accumulator() = next_value; + auto next_result = bytecode_interpreter->run_and_return_frame(*m_generating_function->bytecode_executable(), next_block, frame); vm.pop_execution_context();