From e5eabc0658d2133603596ec17a6e7c956c5fe28c Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Thu, 2 Jun 2022 03:00:45 -0700 Subject: Faster ReadableStream --- .../bindings/builtins/js/ReadableByteStreamController.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js') diff --git a/src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js b/src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js index fac5c864c..0b47d730c 100644 --- a/src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js +++ b/src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js @@ -89,12 +89,17 @@ function byobRequest() if (!@isReadableByteStreamController(this)) throw @makeGetterTypeError("ReadableByteStreamController", "byobRequest"); - if (@getByIdDirectPrivate(this, "byobRequest") === @undefined && @getByIdDirectPrivate(this, "pendingPullIntos").length) { - const firstDescriptor = @getByIdDirectPrivate(this, "pendingPullIntos")[0]; - const view = new @Uint8Array(firstDescriptor.buffer, + + var request = @getByIdDirectPrivate(this, "byobRequest"); + if (request === @undefined) { + var pending = @getByIdDirectPrivate(this, "pendingPullIntos"); + const firstDescriptor = pending.peek(); + if (firstDescriptor) { + const view = new @Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - @putByIdDirectPrivate(this, "byobRequest", new @ReadableStreamBYOBRequest(this, view, @isReadableStream)); + @putByIdDirectPrivate(this, "byobRequest", new @ReadableStreamBYOBRequest(this, view, @isReadableStream)); + } } return @getByIdDirectPrivate(this, "byobRequest"); -- cgit v1.2.3