diff options
author | 2022-08-17 19:25:43 -0700 | |
---|---|---|
committer | 2022-08-17 19:25:43 -0700 | |
commit | bc412e1f6fb4057b25981772b48c1f7d228fcebb (patch) | |
tree | d0b3b365b719afd0ee3963ad640c8a13702bb23e /src/bun.js/bindings/ZigGlobalObject.cpp | |
parent | ddd151a23b95128db6c791f800cb0027bfc2fbb1 (diff) | |
download | bun-bc412e1f6fb4057b25981772b48c1f7d228fcebb.tar.gz bun-bc412e1f6fb4057b25981772b48c1f7d228fcebb.tar.zst bun-bc412e1f6fb4057b25981772b48c1f7d228fcebb.zip |
slightly improve streams perf
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index b0eebfecd..5141ef866 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -1941,6 +1941,28 @@ static JSC_DEFINE_HOST_FUNCTION(functionSetImmediate, return Bun__Timer__setTimeout(globalObject, JSC::JSValue::encode(job), JSC::JSValue::encode(jsNumber(0))); } +EncodedJSValue GlobalObject::assignToStream(JSValue stream, JSValue controller) +{ + JSC::VM& vm = this->vm(); + JSC::JSFunction* function = this->m_assignToStream.get(); + if (!function) { + function = JSFunction::create(vm, static_cast<JSC::FunctionExecutable*>(readableStreamInternalsAssignToStreamCodeGenerator(vm)), this); + this->m_assignToStream.set(vm, this, function); + } + + auto scope = DECLARE_CATCH_SCOPE(vm); + auto callData = JSC::getCallData(function); + JSC::MarkedArgumentBuffer arguments; + arguments.append(stream); + arguments.append(controller); + + auto result = JSC::call(this, function, callData, JSC::jsUndefined(), arguments); + if (scope.exception()) + return JSC::JSValue::encode(scope.exception()); + + return JSC::JSValue::encode(result); +} + void GlobalObject::addBuiltinGlobals(JSC::VM& vm) { m_builtinInternalFunctions.initialize(*this); @@ -2065,7 +2087,6 @@ void GlobalObject::addBuiltinGlobals(JSC::VM& vm) putDirectBuiltinFunction(vm, this, builtinNames.createNativeReadableStreamPrivateName(), readableStreamCreateNativeReadableStreamCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); putDirectBuiltinFunction(vm, this, builtinNames.createEmptyReadableStreamPrivateName(), readableStreamCreateEmptyReadableStreamCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); putDirectBuiltinFunction(vm, this, builtinNames.consumeReadableStreamPrivateName(), readableStreamConsumeReadableStreamCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); - putDirectBuiltinFunction(vm, this, builtinNames.assignToStreamPrivateName(), readableStreamInternalsAssignToStreamCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); putDirectBuiltinFunction(vm, this, builtinNames.createNativeReadableStreamPrivateName(), readableStreamCreateNativeReadableStreamCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); // putDirectBuiltinFunction(vm, this, builtinNames.loadModulePrivateName(), jsZigGlobalObjectInternalsLoadModuleCodeGenerator(vm), PropertyAttribute::Builtin | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); @@ -2363,6 +2384,7 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor) visitor.append(thisObject->m_readableStreamToJSON); visitor.append(thisObject->m_readableStreamToBlob); visitor.append(thisObject->m_readableStreamToArrayBuffer); + visitor.append(thisObject->m_assignToStream); ScriptExecutionContext* context = thisObject->scriptExecutionContext(); visitor.addOpaqueRoot(context); |