diff options
author | 2022-06-02 03:00:45 -0700 | |
---|---|---|
committer | 2022-06-02 03:00:45 -0700 | |
commit | e5eabc0658d2133603596ec17a6e7c956c5fe28c (patch) | |
tree | 8e50a0bfa0ca9eba4145191720bb7d412bf8d26f /src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js | |
parent | 121c2960de87c53cc6bdd5f92fab627a74d21a2b (diff) | |
download | bun-e5eabc0658d2133603596ec17a6e7c956c5fe28c.tar.gz bun-e5eabc0658d2133603596ec17a6e7c956c5fe28c.tar.zst bun-e5eabc0658d2133603596ec17a6e7c956c5fe28c.zip |
Faster ReadableStream
Diffstat (limited to 'src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js')
-rw-r--r-- | src/javascript/jsc/bindings/builtins/js/ReadableByteStreamController.js | 13 |
1 files changed, 9 insertions, 4 deletions
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"); |