diff --git a/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp b/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp index d7cc73f6656..39bfbfa57ba 100644 --- a/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp +++ b/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp @@ -27,16 +27,6 @@ namespace Web::Streams { GC_DEFINE_ALLOCATOR(ReadableStreamDefaultReader); GC_DEFINE_ALLOCATOR(ReadLoopReadRequest); -void ReadLoopReadRequest::visit_edges(Visitor& visitor) -{ - Base::visit_edges(visitor); - visitor.visit(m_realm); - visitor.visit(m_reader); - visitor.visit(m_success_steps); - visitor.visit(m_failure_steps); - visitor.visit(m_chunk_steps); -} - // https://streams.spec.whatwg.org/#default-reader-constructor WebIDL::ExceptionOr> ReadableStreamDefaultReader::construct_impl(JS::Realm& realm, GC::Ref stream) { @@ -70,9 +60,8 @@ void ReadableStreamDefaultReader::visit_edges(Cell::Visitor& visitor) } // https://streams.spec.whatwg.org/#read-loop -ReadLoopReadRequest::ReadLoopReadRequest(JS::VM& vm, JS::Realm& realm, ReadableStreamDefaultReader& reader, GC::Ref success_steps, GC::Ref failure_steps, GC::Ptr chunk_steps) - : m_vm(vm) - , m_realm(realm) +ReadLoopReadRequest::ReadLoopReadRequest(JS::Realm& realm, ReadableStreamDefaultReader& reader, GC::Ref success_steps, GC::Ref failure_steps, GC::Ptr chunk_steps) + : m_realm(realm) , m_reader(reader) , m_success_steps(success_steps) , m_failure_steps(failure_steps) @@ -80,6 +69,16 @@ ReadLoopReadRequest::ReadLoopReadRequest(JS::VM& vm, JS::Realm& realm, ReadableS { } +void ReadLoopReadRequest::visit_edges(Visitor& visitor) +{ + Base::visit_edges(visitor); + visitor.visit(m_realm); + visitor.visit(m_reader); + visitor.visit(m_success_steps); + visitor.visit(m_failure_steps); + visitor.visit(m_chunk_steps); +} + // chunk steps, given chunk void ReadLoopReadRequest::on_chunk(JS::Value chunk) { @@ -203,11 +202,10 @@ void ReadableStreamDefaultReader::read_a_chunk(Fetch::Infrastructure::Incrementa void ReadableStreamDefaultReader::read_all_bytes(GC::Ref success_steps, GC::Ref failure_steps) { auto& realm = this->realm(); - auto& vm = realm.vm(); // 1. Let readRequest be a new read request with the following items: // NOTE: items and steps in ReadLoopReadRequest. - auto read_request = heap().allocate(vm, realm, *this, success_steps, failure_steps); + auto read_request = heap().allocate(realm, *this, success_steps, failure_steps); // 2. Perform ! ReadableStreamDefaultReaderRead(this, readRequest). readable_stream_default_reader_read(*this, read_request); diff --git a/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h b/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h index c98b2765ab1..243ef46c6c3 100644 --- a/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h +++ b/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h @@ -49,18 +49,15 @@ public: // AD-HOC: callback triggered on every chunk received from the stream. using ChunkSteps = GC::Function; - ReadLoopReadRequest(JS::VM& vm, JS::Realm& realm, ReadableStreamDefaultReader& reader, GC::Ref success_steps, GC::Ref failure_steps, GC::Ptr chunk_steps = {}); - - virtual void on_chunk(JS::Value chunk) override; - - virtual void on_close() override; - - virtual void on_error(JS::Value error) override; - private: + ReadLoopReadRequest(JS::Realm&, ReadableStreamDefaultReader&, GC::Ref, GC::Ref, GC::Ptr = {}); + virtual void visit_edges(Visitor&) override; - JS::VM& m_vm; + virtual void on_chunk(JS::Value chunk) override; + virtual void on_close() override; + virtual void on_error(JS::Value error) override; + GC::Ref m_realm; GC::Ref m_reader; ByteBuffer m_bytes;