[webkit-reviews] review granted: [Bug 215557] Optimise resolution of promises with values in ReadableStream implementation : [Attachment 406773] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Aug 18 11:58:27 PDT 2020


Yusuke Suzuki <ysuzuki at apple.com> has granted youenn fablet
<youennf at gmail.com>'s request for review:
Bug 215557: Optimise resolution of promises with values in ReadableStream
implementation
https://bugs.webkit.org/show_bug.cgi?id=215557

Attachment 406773: Patch

https://bugs.webkit.org/attachment.cgi?id=406773&action=review




--- Comment #6 from Yusuke Suzuki <ysuzuki at apple.com> ---
Comment on attachment 406773
  --> https://bugs.webkit.org/attachment.cgi?id=406773
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=406773&action=review

r=me

> Source/WebCore/Modules/streams/ReadableStreamInternals.js:305
>	   const requests = @getByIdDirectPrivate(reader, "readRequests");
>	   for (let index = 0, length = requests.length; index < length;
++index)
> -	       requests[index]. at reject.@call(@undefined, error);
> +	       @rejectPromise(requests[index], error);
>	   @putByIdDirectPrivate(reader, "readRequests", []);

I recommend doing,

const requests = @getByIdDirectPrivate(reader, "readRequests");
@putByIdDirectPrivate(reader, "readRequests", []);
for (let index = 0, length = requests.length; index < length; ++index)
    @rejectPromise(requests[index], error);

To ensure there is no reference to these promises from ReadableStream while
calling @rejectPromise.

> Source/WebCore/Modules/streams/ReadableStreamInternals.js:311
>	   const requests = @getByIdDirectPrivate(reader, "readIntoRequests");
>	   for (let index = 0, length = requests.length; index < length;
++index)
> -	       requests[index]. at reject.@call(@undefined, error);
> +	       @rejectPromise(requests[index], error);
>	   @putByIdDirectPrivate(reader, "readIntoRequests", []);

Ditto.

> Source/WebCore/Modules/streams/ReadableStreamInternals.js:450
>	   for (let index = 0, length = requests.length; index < length;
++index)
> -	       requests[index]. at resolve.@call(@undefined, {value:@undefined,
done: true});
> +	       @fulfillPromise(requests[index], { value: @undefined, done: true
});
>	   @putByIdDirectPrivate(reader, "readRequests", []);

Ditto.


More information about the webkit-reviews mailing list