aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp104
1 files changed, 57 insertions, 47 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 4d05c8ace..1056ec445 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -2037,29 +2037,27 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionPerformMicrotask, (JSGlobalObject * globalObj
JSValue result;
WTF::NakedPtr<JSC::Exception> exceptionPtr;
- switch (callframe->argumentCount()) {
- case 1:
- JSC::call(globalObject, job, callData, jsUndefined(), arguments, exceptionPtr);
- break;
- case 2:
- arguments.append(callframe->argument(1));
- JSC::call(globalObject, job, callData, jsUndefined(), arguments, exceptionPtr);
- break;
- case 3:
- arguments.append(callframe->argument(1));
- arguments.append(callframe->argument(2));
- JSC::call(globalObject, job, callData, jsUndefined(), arguments, exceptionPtr);
- break;
- case 4:
- arguments.append(callframe->argument(1));
- arguments.append(callframe->argument(2));
- arguments.append(callframe->argument(3));
- JSC::call(globalObject, job, callData, jsUndefined(), arguments, exceptionPtr);
- break;
- default:
- RELEASE_ASSERT_NOT_REACHED();
+ size_t argCount = callframe->argumentCount();
+ if (argCount > 1) {
+ if (JSValue arg0 = callframe->argument(1)) {
+ arguments.append(arg0);
+ }
+
+ if (argCount > 2) {
+ if (JSValue arg1 = callframe->argument(2)) {
+ arguments.append(arg1);
+ }
+
+ if (argCount > 3) {
+ if (JSValue arg2 = callframe->argument(3)) {
+ arguments.append(arg2);
+ }
+ }
+ }
}
+ JSC::call(globalObject, job, callData, jsUndefined(), arguments, exceptionPtr);
+
if (auto* exception = exceptionPtr.get()) {
Bun__reportUnhandledError(globalObject, JSValue::encode(exception));
}
@@ -2992,33 +2990,52 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
visitor.append(constructor);
thisObject->m_builtinInternalFunctions.visit(visitor);
- thisObject->m_JSFFIFunctionStructure.visit(visitor);
+
+ visitor.append(thisObject->m_assignToStream);
+ visitor.append(thisObject->m_readableStreamToArrayBuffer);
+ visitor.append(thisObject->m_readableStreamToArrayBufferResolve);
+ visitor.append(thisObject->m_readableStreamToBlob);
+ visitor.append(thisObject->m_readableStreamToJSON);
+ visitor.append(thisObject->m_readableStreamToText);
+
+ visitor.append(thisObject->m_JSTextDecoderSetterValue);
+ visitor.append(thisObject->m_JSResponseSetterValue);
+ visitor.append(thisObject->m_JSRequestSetterValue);
+ visitor.append(thisObject->m_JSBlobSetterValue);
+ visitor.append(thisObject->m_JSMessageEventSetterValue);
+ visitor.append(thisObject->m_JSBufferSetterValue);
+ visitor.append(thisObject->m_JSWebSocketSetterValue);
+ visitor.append(thisObject->m_JSFetchHeadersSetterValue);
+ visitor.append(thisObject->m_JSTextEncoderSetterValue);
+ visitor.append(thisObject->m_JSURLSearchParamsSetterValue);
+
thisObject->m_JSArrayBufferSinkClassStructure.visit(visitor);
- thisObject->m_JSArrayBufferControllerPrototype.visit(visitor);
thisObject->m_JSBufferListClassStructure.visit(visitor);
- thisObject->m_JSStringDecoderClassStructure.visit(visitor);
+ thisObject->m_JSFFIFunctionStructure.visit(visitor);
+ thisObject->m_JSFileSinkClassStructure.visit(visitor);
+ thisObject->m_JSHTTPResponseSinkClassStructure.visit(visitor);
+ thisObject->m_JSHTTPSResponseSinkClassStructure.visit(visitor);
thisObject->m_JSReadableStateClassStructure.visit(visitor);
+ thisObject->m_JSStringDecoderClassStructure.visit(visitor);
+ thisObject->m_NapiClassStructure.visit(visitor);
+ thisObject->m_OnigurumaRegExpClassStructure.visit(visitor);
+
+ thisObject->m_pendingVirtualModuleResultStructure.visit(visitor);
+ thisObject->m_performMicrotaskFunction.visit(visitor);
+ thisObject->m_performMicrotaskVariadicFunction.visit(visitor);
thisObject->m_lazyReadableStreamPrototypeMap.visit(visitor);
thisObject->m_requireMap.visit(visitor);
+ thisObject->m_encodeIntoObjectPrototype.visit(visitor);
+ thisObject->m_JSArrayBufferControllerPrototype.visit(visitor);
+ thisObject->m_JSFileSinkControllerPrototype.visit(visitor);
+ thisObject->m_JSHTTPSResponseControllerPrototype.visit(visitor);
+ thisObject->m_navigatorObject.visit(visitor);
+ thisObject->m_performanceObject.visit(visitor);
+ thisObject->m_primordialsObject.visit(visitor);
thisObject->m_processEnvObject.visit(visitor);
thisObject->m_processObject.visit(visitor);
- thisObject->m_performanceObject.visit(visitor);
- thisObject->m_navigatorObject.visit(visitor);
thisObject->m_subtleCryptoObject.visit(visitor);
- thisObject->m_primordialsObject.visit(visitor);
-
- thisObject->m_JSHTTPResponseSinkClassStructure.visit(visitor);
- thisObject->m_JSHTTPSResponseSinkClassStructure.visit(visitor);
- thisObject->m_JSFileSinkClassStructure.visit(visitor);
- thisObject->m_OnigurumaRegExpClassStructure.visit(visitor);
-
- visitor.append(thisObject->m_JSBufferSetterValue);
- visitor.append(thisObject->m_JSTextEncoderSetterValue);
- visitor.append(thisObject->m_JSMessageEventSetterValue);
- visitor.append(thisObject->m_JSWebSocketSetterValue);
- visitor.append(thisObject->m_JSFetchHeadersSetterValue);
- visitor.append(thisObject->m_JSTextEncoderSetterValue);
- visitor.append(thisObject->m_JSURLSearchParamsSetterValue);
+ thisObject->m_JSHTTPResponseController.visit(visitor);
for (auto& barrier : thisObject->m_thenables) {
visitor.append(barrier);
@@ -3026,13 +3043,6 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
thisObject->visitGeneratedLazyClasses<Visitor>(thisObject, visitor);
- visitor.append(thisObject->m_readableStreamToArrayBufferResolve);
- visitor.append(thisObject->m_readableStreamToText);
- 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);
}