Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 127ad248be85961feb1bdb4ed24347e14b2a4989
      
https://github.com/WebKit/WebKit/commit/127ad248be85961feb1bdb4ed24347e14b2a4989
  Author: Youenn Fablet <[email protected]>
  Date:   2025-11-24 (Mon, 24 Nov 2025)

  Changed paths:
    M Source/WebCore/Modules/streams/ReadableStream.cpp
    M Source/WebCore/Modules/streams/ReadableStream.h
    M Source/WebCore/Modules/streams/StreamTeeUtilities.cpp

  Log Message:
  -----------
  StreamTeeState should not take JSC::Strong for cancel reasons
https://bugs.webkit.org/show_bug.cgi?id=302797
rdar://165110134

Reviewed by Chris Dumez.

Instead of using Strongs, we use JSValueInWrappedObject for cancel reasons.
We then need to ensure that these values are visited.
To do so, we replace the relatedStream scheme used to keep the teed readable 
stream alive by a new DependencyToVisit class that gets visited.
StreamTeeState is a DependencyToVisit and will ensure both teed readable stream 
and JSValueInWrappedObject reasons are visited.

Covered by existing tests.

* Source/WebCore/Modules/streams/ReadableStream.cpp:
(WebCore::ReadableStream::ReadableStream):
(WebCore::ReadableStream::createReadableByteStream):
(WebCore::ReadableStream::visitAdditionalChildren):
* Source/WebCore/Modules/streams/ReadableStream.h:
(WebCore::ReadableStream::ReadableStream):
* Source/WebCore/Modules/streams/StreamTeeUtilities.cpp:
(WebCore::byteStreamTee):
(WebCore::StreamTeeState::create): Deleted.
(WebCore::StreamTeeState::isReader const): Deleted.
(WebCore::StreamTeeState::reading const): Deleted.
(WebCore::StreamTeeState::setReading): Deleted.
(WebCore::StreamTeeState::readAgainForBranch1 const): Deleted.
(WebCore::StreamTeeState::setReadAgainForBranch1): Deleted.
(WebCore::StreamTeeState::readAgainForBranch2 const): Deleted.
(WebCore::StreamTeeState::setReadAgainForBranch2): Deleted.
(WebCore::StreamTeeState::canceled1 const): Deleted.
(WebCore::StreamTeeState::canceled2 const): Deleted.
(WebCore::StreamTeeState::setCanceled1): Deleted.
(WebCore::StreamTeeState::setCanceled2): Deleted.
(WebCore::StreamTeeState::takeReason1): Deleted.
(WebCore::StreamTeeState::takeReason2): Deleted.
(WebCore::StreamTeeState::setReason1): Deleted.
(WebCore::StreamTeeState::setReason2): Deleted.
(WebCore::StreamTeeState::stream const): Deleted.
(WebCore::StreamTeeState::branch1 const): Deleted.
(WebCore::StreamTeeState::branch2 const): Deleted.
(WebCore::StreamTeeState::setBranch1): Deleted.
(WebCore::StreamTeeState::setBranch2): Deleted.
(WebCore::StreamTeeState::byobReader const): Deleted.
(WebCore::StreamTeeState::takeBYOBReader): Deleted.
(WebCore::StreamTeeState::setReader): Deleted.
(WebCore::StreamTeeState::defaultReader const): Deleted.
(WebCore::StreamTeeState::takeDefaultReader): Deleted.
(WebCore::StreamTeeState::cancelPromise): Deleted.
(WebCore::StreamTeeState::resolveCancelPromise): Deleted.
(WebCore::StreamTeeState::rejectCancelPromise): Deleted.
(WebCore::StreamTeeState::forwardReadError): Deleted.
(WebCore::StreamTeeState::globalObject): Deleted.
(WebCore::StreamTeeState::queueMicrotaskWithValue): Deleted.
(WebCore::StreamTeeState::StreamTeeState): Deleted.

Canonical link: https://commits.webkit.org/303481@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to