aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp5
-rw-r--r--src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp4
-rw-r--r--src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp8
-rw-r--r--src/bun.js/builtins/js/StreamInternals.js2
-rw-r--r--src/bun.js/builtins/js/WritableStreamInternals.js6
5 files changed, 16 insertions, 9 deletions
diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
index 80945d27e..751a2a895 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
@@ -335,7 +335,7 @@ const char* const s_readableStreamInternalsReadableStreamDefaultControllerStartC
const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructorKind = JSC::ConstructorKind::None;
const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength = 3257;
+const int s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength = 3326;
static const JSC::Intrinsic s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCode =
"(function (\n" \
@@ -348,6 +348,9 @@ const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCod
") {\n" \
" \"use strict\";\n" \
"\n" \
+ " const isDirectStream = !!@getByIdDirectPrivate(source, \"start\");\n" \
+ "\n" \
+ "\n" \
" @assert(@isReadableStream(source));\n" \
" @assert(@isWritableStream(destination));\n" \
" @assert(!@isReadableStreamLocked(source));\n" \
diff --git a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
index edaa6b89b..65fe8a753 100644
--- a/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/StreamInternalsBuiltins.cpp
@@ -354,7 +354,7 @@ const char* const s_streamInternalsEnqueueValueWithSizeCode =
const JSC::ConstructAbility s_streamInternalsPeekQueueValueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_streamInternalsPeekQueueValueCodeConstructorKind = JSC::ConstructorKind::None;
const JSC::ImplementationVisibility s_streamInternalsPeekQueueValueCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_streamInternalsPeekQueueValueCodeLength = 115;
+const int s_streamInternalsPeekQueueValueCodeLength = 116;
static const JSC::Intrinsic s_streamInternalsPeekQueueValueCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_streamInternalsPeekQueueValueCode =
"(function (queue)\n" \
@@ -363,7 +363,7 @@ const char* const s_streamInternalsPeekQueueValueCode =
"\n" \
" @assert(queue.content.isNotEmpty());\n" \
"\n" \
- " return queue.peek().value;\n" \
+ " return queue.peek()?.value;\n" \
"})\n" \
;
diff --git a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
index afbac0742..73df2027d 100644
--- a/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/WritableStreamInternalsBuiltins.cpp
@@ -978,7 +978,7 @@ const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerF
const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructorKind = JSC::ConstructorKind::None;
const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeLength = 895;
+const int s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeLength = 884;
static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCode =
"(function (controller)\n" \
@@ -1000,10 +1000,12 @@ const char* const s_writableStreamInternalsWritableStreamDefaultControllerAdvanc
" return;\n" \
" }\n" \
"\n" \
- " if (@getByIdDirectPrivate(controller, \"queue\").content?.isEmpty() ?? false)\n" \
+ " const queue = @getByIdDirectPrivate(controller, \"queue\");\n" \
+ "\n" \
+ " if (queue.content?.isEmpty() ?? false)\n" \
" return;\n" \
"\n" \
- " const value = @peekQueueValue(@getByIdDirectPrivate(controller, \"queue\"));\n" \
+ " const value = @peekQueueValue(queue);\n" \
" if (value === @isCloseSentinel)\n" \
" @writableStreamDefaultControllerProcessClose(controller);\n" \
" else\n" \
diff --git a/src/bun.js/builtins/js/StreamInternals.js b/src/bun.js/builtins/js/StreamInternals.js
index 9f8cb84f4..5e8e4a119 100644
--- a/src/bun.js/builtins/js/StreamInternals.js
+++ b/src/bun.js/builtins/js/StreamInternals.js
@@ -252,7 +252,7 @@ function peekQueueValue(queue)
@assert(queue.content.isNotEmpty());
- return queue.peek().value;
+ return queue.peek()?.value;
}
function resetQueue(queue)
diff --git a/src/bun.js/builtins/js/WritableStreamInternals.js b/src/bun.js/builtins/js/WritableStreamInternals.js
index 5a97155f2..58c4ee87c 100644
--- a/src/bun.js/builtins/js/WritableStreamInternals.js
+++ b/src/bun.js/builtins/js/WritableStreamInternals.js
@@ -714,10 +714,12 @@ function writableStreamDefaultControllerAdvanceQueueIfNeeded(controller)
return;
}
- if (@getByIdDirectPrivate(controller, "queue").content?.isEmpty() ?? false)
+ const queue = @getByIdDirectPrivate(controller, "queue");
+
+ if (queue.content?.isEmpty() ?? false)
return;
- const value = @peekQueueValue(@getByIdDirectPrivate(controller, "queue"));
+ const value = @peekQueueValue(queue);
if (value === @isCloseSentinel)
@writableStreamDefaultControllerProcessClose(controller);
else