// AUTO-GENERATED FILE. DO NOT EDIT. // Generated by 'make generate-sink' at 2023-07-18T09:07:30.319Z // To regenerate this file, run: // // make generate-sink // #include "root.h" #include "headers.h" #include "BunClientData.h" #include "JSSink.h" #include "ActiveDOMObject.h" #include "ExtendedDOMClientIsoSubspaces.h" #include "ExtendedDOMIsoSubspaces.h" #include "IDLTypes.h" // #include "JSBlob.h" #include "JSDOMAttribute.h" #include "JSDOMBinding.h" #include "JSDOMConstructor.h" #include "JSDOMConvertBase.h" #include "JSDOMConvertInterface.h" #include "JSDOMConvertStrings.h" #include "JSDOMExceptionHandling.h" #include "JSDOMGlobalObject.h" #include "JSDOMGlobalObjectInlines.h" #include "JSDOMOperation.h" #include "JSDOMWrapperCache.h" #include "ScriptExecutionContext.h" #include "WebCoreJSClientData.h" #include "JavaScriptCore/FunctionPrototype.h" #include "JavaScriptCore/HeapAnalyzer.h" #include "JavaScriptCore/JSDestructibleObjectHeapCellType.h" #include "JavaScriptCore/SlotVisitorMacros.h" #include "JavaScriptCore/SubspaceInlines.h" #include "wtf/GetPtr.h" #include "wtf/PointerPreparations.h" #include "wtf/URL.h" #include "JavaScriptCore/BuiltinNames.h" #include "JSBufferEncodingType.h" #include "JavaScriptCore/JSBase.h" #if ENABLE(MEDIA_SOURCE) #include "BufferMediaSource.h" #include "JSMediaSource.h" #endif // #include "JavaScriptCore/JSTypedArrayViewPrototype.h" #include "JavaScriptCore/JSArrayBufferViewInlines.h" #include "JSReadableStream.h" #include "BunClientData.h" #include "JavaScriptCore/Weak.h" #include "JavaScriptCore/WeakInlines.h" namespace WebCore { using namespace JSC; JSC_DEFINE_HOST_FUNCTION(functionStartDirectStream, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); JSC::JSValue readableStream = callFrame->argument(0); JSC::JSValue onPull = callFrame->argument(1); JSC::JSValue onClose = callFrame->argument(2); if (!readableStream.isObject()) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected ReadableStream"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } if (!onPull.isObject() || !onPull.isCallable()) { onPull = JSC::jsUndefined(); } if (!onClose.isObject() || !onClose.isCallable()) { onClose = JSC::jsUndefined(); } JSC::JSFunction* onPullFunction = JSC::jsDynamicCast(onPull); JSC::JSFunction* onCloseFunction = JSC::jsDynamicCast(onClose); if (WebCore::JSReadableArrayBufferSinkController* ArrayBufferSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (ArrayBufferSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } ArrayBufferSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else if (WebCore::JSReadableFileSinkController* FileSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (FileSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } FileSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else if (WebCore::JSReadableHTTPResponseSinkController* HTTPResponseSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (HTTPResponseSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } HTTPResponseSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else if (WebCore::JSReadableHTTPSResponseSinkController* HTTPSResponseSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (HTTPSResponseSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } HTTPSResponseSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else if (WebCore::JSReadableBrotliDecompressorSinkController* BrotliDecompressorSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (BrotliDecompressorSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } BrotliDecompressorSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else if (WebCore::JSReadableBrotliCompressorSinkController* BrotliCompressorSinkController = JSC::jsDynamicCast(callFrame->thisValue())) { if (BrotliCompressorSinkController->wrapped() == nullptr) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Cannot start stream with closed controller"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } BrotliCompressorSinkController->start(globalObject, readableStream, onPullFunction, onCloseFunction); } else { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Unknown direct controller. This is a bug in Bun."_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } RELEASE_AND_RETURN(scope, JSC::JSValue::encode(JSC::jsUndefined())); } void JSArrayBufferSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { ArrayBufferSink__updateRef(m_sinkPtr, true); } } void JSArrayBufferSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { ArrayBufferSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(ArrayBufferSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(ArrayBufferSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionArrayBufferSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->ArrayBufferSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableArrayBufferSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableArrayBufferSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableArrayBufferSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableArrayBufferSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); ArrayBufferSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableArrayBufferSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableArrayBufferSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableArrayBufferSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableArrayBufferSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return ArrayBufferSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(ArrayBufferSink__doClose); JSC_DEFINE_HOST_FUNCTION(ArrayBufferSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSArrayBufferSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected ArrayBufferSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); ArrayBufferSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } void JSFileSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { FileSink__updateRef(m_sinkPtr, true); } } void JSFileSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { FileSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(FileSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(FileSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionFileSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->FileSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableFileSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableFileSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableFileSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableFileSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); FileSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableFileSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableFileSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableFileSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableFileSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return FileSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(FileSink__doClose); JSC_DEFINE_HOST_FUNCTION(FileSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSFileSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected FileSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); FileSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } void JSHTTPResponseSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { HTTPResponseSink__updateRef(m_sinkPtr, true); } } void JSHTTPResponseSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { HTTPResponseSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(HTTPResponseSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(HTTPResponseSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionHTTPResponseSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->HTTPResponseSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableHTTPResponseSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableHTTPResponseSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableHTTPResponseSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableHTTPResponseSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); HTTPResponseSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableHTTPResponseSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableHTTPResponseSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableHTTPResponseSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableHTTPResponseSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return HTTPResponseSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(HTTPResponseSink__doClose); JSC_DEFINE_HOST_FUNCTION(HTTPResponseSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSHTTPResponseSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected HTTPResponseSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); HTTPResponseSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } void JSHTTPSResponseSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { HTTPSResponseSink__updateRef(m_sinkPtr, true); } } void JSHTTPSResponseSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { HTTPSResponseSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(HTTPSResponseSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(HTTPSResponseSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionHTTPSResponseSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->HTTPSResponseSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableHTTPSResponseSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableHTTPSResponseSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableHTTPSResponseSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableHTTPSResponseSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); HTTPSResponseSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableHTTPSResponseSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableHTTPSResponseSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableHTTPSResponseSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableHTTPSResponseSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return HTTPSResponseSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(HTTPSResponseSink__doClose); JSC_DEFINE_HOST_FUNCTION(HTTPSResponseSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSHTTPSResponseSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected HTTPSResponseSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); HTTPSResponseSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } void JSBrotliDecompressorSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { BrotliDecompressorSink__updateRef(m_sinkPtr, true); } } void JSBrotliDecompressorSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { BrotliDecompressorSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(BrotliDecompressorSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(BrotliDecompressorSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionBrotliDecompressorSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->BrotliDecompressorSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableBrotliDecompressorSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableBrotliDecompressorSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableBrotliDecompressorSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableBrotliDecompressorSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); BrotliDecompressorSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableBrotliDecompressorSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableBrotliDecompressorSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableBrotliDecompressorSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableBrotliDecompressorSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return BrotliDecompressorSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(BrotliDecompressorSink__doClose); JSC_DEFINE_HOST_FUNCTION(BrotliDecompressorSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSBrotliDecompressorSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected BrotliDecompressorSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); BrotliDecompressorSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } void JSBrotliCompressorSink::ref() { if (!m_sinkPtr) return; m_refCount++; if (m_refCount == 1) { BrotliCompressorSink__updateRef(m_sinkPtr, true); } } void JSBrotliCompressorSink::unref() { if (!m_sinkPtr) return; m_refCount = std::max(0, m_refCount - 1); if (!m_refCount) { BrotliCompressorSink__updateRef(m_sinkPtr, false); } } JSC_DEFINE_HOST_FUNCTION(BrotliCompressorSink__ref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->ref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_HOST_FUNCTION(BrotliCompressorSink__unref, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto* sink = jsDynamicCast(callFrame->thisValue()); if (LIKELY(sink)) { sink->unref(); } return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DEFINE_CUSTOM_GETTER(functionBrotliCompressorSink__getter, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::PropertyName)) { auto& vm = lexicalGlobalObject->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); return JSC::JSValue::encode(globalObject->BrotliCompressorSink()); } JSC_DECLARE_HOST_FUNCTION(JSReadableBrotliCompressorSinkController__close); JSC_DEFINE_HOST_FUNCTION(JSReadableBrotliCompressorSinkController__close, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableBrotliCompressorSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableBrotliCompressorSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); BrotliCompressorSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } JSC_DECLARE_HOST_FUNCTION(JSReadableBrotliCompressorSinkController__end); JSC_DEFINE_HOST_FUNCTION(JSReadableBrotliCompressorSinkController__end, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSReadableBrotliCompressorSinkController* controller = JSC::jsDynamicCast(callFrame->thisValue()); if (!controller) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected JSReadableBrotliCompressorSinkController"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = controller->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } controller->detach(); return BrotliCompressorSink__endWithSink(ptr, lexicalGlobalObject); } JSC_DECLARE_HOST_FUNCTION(BrotliCompressorSink__doClose); JSC_DEFINE_HOST_FUNCTION(BrotliCompressorSink__doClose, (JSC::JSGlobalObject * lexicalGlobalObject, JSC::CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); Zig::GlobalObject* globalObject = reinterpret_cast(lexicalGlobalObject); WebCore::JSBrotliCompressorSink* sink = JSC::jsDynamicCast(callFrame->thisValue()); if (!sink) { scope.throwException(globalObject, JSC::createTypeError(globalObject, "Expected BrotliCompressorSink"_s)); return JSC::JSValue::encode(JSC::jsUndefined()); } void* ptr = sink->wrapped(); if (ptr == nullptr) { return JSC::JSValue::encode(JSC::jsUndefined()); } sink->detach(); BrotliCompressorSink__close(lexicalGlobalObject, ptr); return JSC::JSValue::encode(JSC::jsUndefined()); } #include "JSSinkLookupTable.h" /* Source for JSArrayBufferSinkPrototypeTableValues.lut.h @begin JSArrayBufferSinkPrototypeTable close ArrayBufferSink__doClose ReadOnly|DontDelete|Function 0 flush ArrayBufferSink__flush ReadOnly|DontDelete|Function 1 end ArrayBufferSink__end ReadOnly|DontDelete|Function 0 start ArrayBufferSink__start ReadOnly|DontDelete|Function 1 write ArrayBufferSink__write ReadOnly|DontDelete|Function 1 ref ArrayBufferSink__ref ReadOnly|DontDelete|Function 0 unref ArrayBufferSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableArrayBufferSinkControllerPrototypeTableValues.lut.h @begin JSReadableArrayBufferSinkControllerPrototypeTable close JSReadableArrayBufferSinkController__close ReadOnly|DontDelete|Function 0 flush ArrayBufferSink__flush ReadOnly|DontDelete|Function 1 end JSReadableArrayBufferSinkController__end ReadOnly|DontDelete|Function 0 start ArrayBufferSink__start ReadOnly|DontDelete|Function 1 write ArrayBufferSink__write ReadOnly|DontDelete|Function 1 @end */ /* Source for JSFileSinkPrototypeTableValues.lut.h @begin JSFileSinkPrototypeTable close FileSink__doClose ReadOnly|DontDelete|Function 0 flush FileSink__flush ReadOnly|DontDelete|Function 1 end FileSink__end ReadOnly|DontDelete|Function 0 start FileSink__start ReadOnly|DontDelete|Function 1 write FileSink__write ReadOnly|DontDelete|Function 1 ref FileSink__ref ReadOnly|DontDelete|Function 0 unref FileSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableFileSinkControllerPrototypeTableValues.lut.h @begin JSReadableFileSinkControllerPrototypeTable close JSReadableFileSinkController__close ReadOnly|DontDelete|Function 0 flush FileSink__flush ReadOnly|DontDelete|Function 1 end JSReadableFileSinkController__end ReadOnly|DontDelete|Function 0 start FileSink__start ReadOnly|DontDelete|Function 1 write FileSink__write ReadOnly|DontDelete|Function 1 @end */ /* Source for JSHTTPResponseSinkPrototypeTableValues.lut.h @begin JSHTTPResponseSinkPrototypeTable close HTTPResponseSink__doClose ReadOnly|DontDelete|Function 0 flush HTTPResponseSink__flush ReadOnly|DontDelete|Function 1 end HTTPResponseSink__end ReadOnly|DontDelete|Function 0 start HTTPResponseSink__start ReadOnly|DontDelete|Function 1 write HTTPResponseSink__write ReadOnly|DontDelete|Function 1 ref HTTPResponseSink__ref ReadOnly|DontDelete|Function 0 unref HTTPResponseSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableHTTPResponseSinkControllerPrototypeTableValues.lut.h @begin JSReadableHTTPResponseSinkControllerPrototypeTable close JSReadableHTTPResponseSinkController__close ReadOnly|DontDelete|Function 0 flush HTTPResponseSink__flush ReadOnly|DontDelete|Function 1 end JSReadableHTTPResponseSinkController__end ReadOnly|DontDelete|Function 0 start HTTPResponseSink__start ReadOnly|DontDelete|Function 1 write HTTPResponseSink__write ReadOnly|DontDelete|Function 1 @end */ /* Source for JSHTTPSResponseSinkPrototypeTableValues.lut.h @begin JSHTTPSResponseSinkPrototypeTable close HTTPSResponseSink__doClose ReadOnly|DontDelete|Function 0 flush HTTPSResponseSink__flush ReadOnly|DontDelete|Function 1 end HTTPSResponseSink__end ReadOnly|DontDelete|Function 0 start HTTPSResponseSink__start ReadOnly|DontDelete|Function 1 write HTTPSResponseSink__write ReadOnly|DontDelete|Function 1 ref HTTPSResponseSink__ref ReadOnly|DontDelete|Function 0 unref HTTPSResponseSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableHTTPSResponseSinkControllerPrototypeTableValues.lut.h @begin JSReadableHTTPSResponseSinkControllerPrototypeTable close JSReadableHTTPSResponseSinkController__close ReadOnly|DontDelete|Function 0 flush HTTPSResponseSink__flush ReadOnly|DontDelete|Function 1 end JSReadableHTTPSResponseSinkController__end ReadOnly|DontDelete|Function 0 start HTTPSResponseSink__start ReadOnly|DontDelete|Function 1 write HTTPSResponseSink__write ReadOnly|DontDelete|Function 1 @end */ /* Source for JSBrotliDecompressorSinkPrototypeTableValues.lut.h @begin JSBrotliDecompressorSinkPrototypeTable close BrotliDecompressorSink__doClose ReadOnly|DontDelete|Function 0 flush BrotliDecompressorSink__flush ReadOnly|DontDelete|Function 1 end BrotliDecompressorSink__end ReadOnly|DontDelete|Function 0 start BrotliDecompressorSink__start ReadOnly|DontDelete|Function 1 write BrotliDecompressorSink__write ReadOnly|DontDelete|Function 1 ref BrotliDecompressorSink__ref ReadOnly|DontDelete|Function 0 unref BrotliDecompressorSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableBrotliDecompressorSinkControllerPrototypeTableValues.lut.h @begin JSReadableBrotliDecompressorSinkControllerPrototypeTable close JSReadableBrotliDecompressorSinkController__close ReadOnly|DontDelete|Function 0 flush BrotliDecompressorSink__flush ReadOnly|DontDelete|Function 1 end JSReadableBrotliDecompressorSinkController__end ReadOnly|DontDelete|Function 0 start BrotliDecompressorSink__start ReadOnly|DontDelete|Function 1 write BrotliDecompressorSink__write ReadOnly|DontDelete|Function 1 @end */ /* Source for JSBrotliCompressorSinkPrototypeTableValues.lut.h @begin JSBrotliCompressorSinkPrototypeTable close BrotliCompressorSink__doClose ReadOnly|DontDelete|Function 0 flush BrotliCompressorSink__flush ReadOnly|DontDelete|Function 1 end BrotliCompressorSink__end ReadOnly|DontDelete|Function 0 start BrotliCompressorSink__start ReadOnly|DontDelete|Function 1 write BrotliCompressorSink__write ReadOnly|DontDelete|Function 1 ref BrotliCompressorSink__ref ReadOnly|DontDelete|Function 0 unref BrotliCompressorSink__unref ReadOnly|DontDelete|Function 0 @end */ /* Source for JSReadableBrotliCompressorSinkControllerPrototypeTableValues.lut.h @begin JSReadableBrotliCompressorSinkControllerPrototypeTable close JSReadableBrotliCompressorSinkController__close ReadOnly|DontDelete|Function 0 flush BrotliCompressorSink__flush ReadOnly|DontDelete|Function 1 end JSReadableBrotliCompressorSinkController__end ReadOnly|DontDelete|Function 0 start BrotliCompressorSink__start ReadOnly|DontDelete|Function 1 write BrotliCompressorSink__write ReadOnly|DontDelete|Function 1 @end */ #pragma mark - ArrayBufferSink class JSArrayBufferSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSArrayBufferSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSArrayBufferSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSArrayBufferSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSArrayBufferSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSArrayBufferSinkPrototype, JSArrayBufferSinkPrototype::Base); class JSReadableArrayBufferSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableArrayBufferSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableArrayBufferSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableArrayBufferSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableArrayBufferSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableArrayBufferSinkControllerPrototype, JSReadableArrayBufferSinkControllerPrototype::Base); const ClassInfo JSArrayBufferSinkPrototype::s_info = { "ArrayBufferSink"_s, &Base::s_info, &JSArrayBufferSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSArrayBufferSinkPrototype) }; const ClassInfo JSArrayBufferSink::s_info = { "ArrayBufferSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSArrayBufferSink) }; const ClassInfo JSArrayBufferSinkConstructor::s_info = { "ArrayBufferSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSArrayBufferSinkConstructor) }; const ClassInfo JSReadableArrayBufferSinkControllerPrototype::s_info = { "ReadableArrayBufferSinkController"_s, &Base::s_info, &JSReadableArrayBufferSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableArrayBufferSinkControllerPrototype) }; const ClassInfo JSReadableArrayBufferSinkController::s_info = { "ReadableArrayBufferSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableArrayBufferSinkController) }; JSArrayBufferSink::~JSArrayBufferSink() { if (m_sinkPtr) { ArrayBufferSink__finalize(m_sinkPtr); } } JSReadableArrayBufferSinkController::~JSReadableArrayBufferSinkController() { if (m_sinkPtr) { ArrayBufferSink__finalize(m_sinkPtr); } } JSObject* JSArrayBufferSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSArrayBufferSinkPrototype::create(vm, &globalObject, JSArrayBufferSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableArrayBufferSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableArrayBufferSinkControllerPrototype::create(vm, &globalObject, JSReadableArrayBufferSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableArrayBufferSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSArrayBufferSinkConstructor* JSArrayBufferSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSArrayBufferSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSArrayBufferSinkConstructor(vm, structure, ArrayBufferSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSArrayBufferSink* JSArrayBufferSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSArrayBufferSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSArrayBufferSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableArrayBufferSinkController* JSReadableArrayBufferSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableArrayBufferSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableArrayBufferSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSArrayBufferSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSArrayBufferSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return ArrayBufferSink__construct(globalObject, callFrame); } void JSArrayBufferSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "ArrayBufferSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSArrayBufferSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSArrayBufferSink::info(), JSArrayBufferSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSArrayBufferSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableArrayBufferSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableArrayBufferSinkController::info(), JSReadableArrayBufferSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSArrayBufferSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSArrayBufferSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableArrayBufferSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSArrayBufferSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableArrayBufferSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableArrayBufferSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableArrayBufferSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableArrayBufferSinkController); template void JSArrayBufferSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSArrayBufferSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSArrayBufferSink); void JSReadableArrayBufferSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSArrayBufferSink::destroy(JSCell* cell) { static_cast(cell)->JSArrayBufferSink::~JSArrayBufferSink(); } void JSReadableArrayBufferSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableArrayBufferSinkController::~JSReadableArrayBufferSinkController(); } #pragma mark - FileSink class JSFileSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSFileSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSFileSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSFileSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSFileSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSFileSinkPrototype, JSFileSinkPrototype::Base); class JSReadableFileSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableFileSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableFileSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableFileSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableFileSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableFileSinkControllerPrototype, JSReadableFileSinkControllerPrototype::Base); const ClassInfo JSFileSinkPrototype::s_info = { "FileSink"_s, &Base::s_info, &JSFileSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSFileSinkPrototype) }; const ClassInfo JSFileSink::s_info = { "FileSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSFileSink) }; const ClassInfo JSFileSinkConstructor::s_info = { "FileSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSFileSinkConstructor) }; const ClassInfo JSReadableFileSinkControllerPrototype::s_info = { "ReadableFileSinkController"_s, &Base::s_info, &JSReadableFileSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableFileSinkControllerPrototype) }; const ClassInfo JSReadableFileSinkController::s_info = { "ReadableFileSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableFileSinkController) }; JSFileSink::~JSFileSink() { if (m_sinkPtr) { FileSink__finalize(m_sinkPtr); } } JSReadableFileSinkController::~JSReadableFileSinkController() { if (m_sinkPtr) { FileSink__finalize(m_sinkPtr); } } JSObject* JSFileSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSFileSinkPrototype::create(vm, &globalObject, JSFileSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableFileSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableFileSinkControllerPrototype::create(vm, &globalObject, JSReadableFileSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableFileSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSFileSinkConstructor* JSFileSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSFileSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSFileSinkConstructor(vm, structure, FileSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSFileSink* JSFileSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSFileSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSFileSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableFileSinkController* JSReadableFileSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableFileSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableFileSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSFileSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSFileSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return FileSink__construct(globalObject, callFrame); } void JSFileSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "FileSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSFileSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSFileSink::info(), JSFileSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSFileSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableFileSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableFileSinkController::info(), JSReadableFileSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSFileSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSFileSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableFileSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSFileSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableFileSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableFileSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableFileSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableFileSinkController); template void JSFileSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSFileSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSFileSink); void JSReadableFileSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSFileSink::destroy(JSCell* cell) { static_cast(cell)->JSFileSink::~JSFileSink(); } void JSReadableFileSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableFileSinkController::~JSReadableFileSinkController(); } #pragma mark - HTTPResponseSink class JSHTTPResponseSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSHTTPResponseSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSHTTPResponseSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPResponseSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSHTTPResponseSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSHTTPResponseSinkPrototype, JSHTTPResponseSinkPrototype::Base); class JSReadableHTTPResponseSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableHTTPResponseSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableHTTPResponseSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableHTTPResponseSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableHTTPResponseSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableHTTPResponseSinkControllerPrototype, JSReadableHTTPResponseSinkControllerPrototype::Base); const ClassInfo JSHTTPResponseSinkPrototype::s_info = { "HTTPResponseSink"_s, &Base::s_info, &JSHTTPResponseSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSHTTPResponseSinkPrototype) }; const ClassInfo JSHTTPResponseSink::s_info = { "HTTPResponseSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTTPResponseSink) }; const ClassInfo JSHTTPResponseSinkConstructor::s_info = { "HTTPResponseSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTTPResponseSinkConstructor) }; const ClassInfo JSReadableHTTPResponseSinkControllerPrototype::s_info = { "ReadableHTTPResponseSinkController"_s, &Base::s_info, &JSReadableHTTPResponseSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableHTTPResponseSinkControllerPrototype) }; const ClassInfo JSReadableHTTPResponseSinkController::s_info = { "ReadableHTTPResponseSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableHTTPResponseSinkController) }; JSHTTPResponseSink::~JSHTTPResponseSink() { if (m_sinkPtr) { HTTPResponseSink__finalize(m_sinkPtr); } } JSReadableHTTPResponseSinkController::~JSReadableHTTPResponseSinkController() { if (m_sinkPtr) { HTTPResponseSink__finalize(m_sinkPtr); } } JSObject* JSHTTPResponseSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSHTTPResponseSinkPrototype::create(vm, &globalObject, JSHTTPResponseSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableHTTPResponseSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableHTTPResponseSinkControllerPrototype::create(vm, &globalObject, JSReadableHTTPResponseSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableHTTPResponseSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSHTTPResponseSinkConstructor* JSHTTPResponseSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSHTTPResponseSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPResponseSinkConstructor(vm, structure, HTTPResponseSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSHTTPResponseSink* JSHTTPResponseSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSHTTPResponseSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPResponseSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableHTTPResponseSinkController* JSReadableHTTPResponseSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableHTTPResponseSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableHTTPResponseSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSHTTPResponseSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSHTTPResponseSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return HTTPResponseSink__construct(globalObject, callFrame); } void JSHTTPResponseSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "HTTPResponseSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSHTTPResponseSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSHTTPResponseSink::info(), JSHTTPResponseSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSHTTPResponseSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableHTTPResponseSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableHTTPResponseSinkController::info(), JSReadableHTTPResponseSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSHTTPResponseSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSHTTPResponseSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableHTTPResponseSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSHTTPResponseSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableHTTPResponseSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableHTTPResponseSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableHTTPResponseSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableHTTPResponseSinkController); template void JSHTTPResponseSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSHTTPResponseSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSHTTPResponseSink); void JSReadableHTTPResponseSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSHTTPResponseSink::destroy(JSCell* cell) { static_cast(cell)->JSHTTPResponseSink::~JSHTTPResponseSink(); } void JSReadableHTTPResponseSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableHTTPResponseSinkController::~JSReadableHTTPResponseSinkController(); } #pragma mark - HTTPSResponseSink class JSHTTPSResponseSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSHTTPSResponseSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSHTTPSResponseSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPSResponseSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSHTTPSResponseSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSHTTPSResponseSinkPrototype, JSHTTPSResponseSinkPrototype::Base); class JSReadableHTTPSResponseSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableHTTPSResponseSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableHTTPSResponseSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableHTTPSResponseSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableHTTPSResponseSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableHTTPSResponseSinkControllerPrototype, JSReadableHTTPSResponseSinkControllerPrototype::Base); const ClassInfo JSHTTPSResponseSinkPrototype::s_info = { "HTTPSResponseSink"_s, &Base::s_info, &JSHTTPSResponseSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSHTTPSResponseSinkPrototype) }; const ClassInfo JSHTTPSResponseSink::s_info = { "HTTPSResponseSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTTPSResponseSink) }; const ClassInfo JSHTTPSResponseSinkConstructor::s_info = { "HTTPSResponseSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTTPSResponseSinkConstructor) }; const ClassInfo JSReadableHTTPSResponseSinkControllerPrototype::s_info = { "ReadableHTTPSResponseSinkController"_s, &Base::s_info, &JSReadableHTTPSResponseSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableHTTPSResponseSinkControllerPrototype) }; const ClassInfo JSReadableHTTPSResponseSinkController::s_info = { "ReadableHTTPSResponseSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableHTTPSResponseSinkController) }; JSHTTPSResponseSink::~JSHTTPSResponseSink() { if (m_sinkPtr) { HTTPSResponseSink__finalize(m_sinkPtr); } } JSReadableHTTPSResponseSinkController::~JSReadableHTTPSResponseSinkController() { if (m_sinkPtr) { HTTPSResponseSink__finalize(m_sinkPtr); } } JSObject* JSHTTPSResponseSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSHTTPSResponseSinkPrototype::create(vm, &globalObject, JSHTTPSResponseSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableHTTPSResponseSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableHTTPSResponseSinkControllerPrototype::create(vm, &globalObject, JSReadableHTTPSResponseSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableHTTPSResponseSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSHTTPSResponseSinkConstructor* JSHTTPSResponseSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSHTTPSResponseSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPSResponseSinkConstructor(vm, structure, HTTPSResponseSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSHTTPSResponseSink* JSHTTPSResponseSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSHTTPSResponseSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSHTTPSResponseSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableHTTPSResponseSinkController* JSReadableHTTPSResponseSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableHTTPSResponseSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableHTTPSResponseSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSHTTPSResponseSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSHTTPSResponseSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return HTTPSResponseSink__construct(globalObject, callFrame); } void JSHTTPSResponseSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "HTTPSResponseSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSHTTPSResponseSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSHTTPSResponseSink::info(), JSHTTPSResponseSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSHTTPSResponseSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableHTTPSResponseSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableHTTPSResponseSinkController::info(), JSReadableHTTPSResponseSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSHTTPSResponseSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSHTTPSResponseSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableHTTPSResponseSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSHTTPSResponseSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableHTTPSResponseSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableHTTPSResponseSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableHTTPSResponseSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableHTTPSResponseSinkController); template void JSHTTPSResponseSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSHTTPSResponseSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSHTTPSResponseSink); void JSReadableHTTPSResponseSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSHTTPSResponseSink::destroy(JSCell* cell) { static_cast(cell)->JSHTTPSResponseSink::~JSHTTPSResponseSink(); } void JSReadableHTTPSResponseSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableHTTPSResponseSinkController::~JSReadableHTTPSResponseSinkController(); } #pragma mark - BrotliDecompressorSink class JSBrotliDecompressorSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSBrotliDecompressorSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSBrotliDecompressorSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliDecompressorSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSBrotliDecompressorSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSBrotliDecompressorSinkPrototype, JSBrotliDecompressorSinkPrototype::Base); class JSReadableBrotliDecompressorSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableBrotliDecompressorSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableBrotliDecompressorSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableBrotliDecompressorSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableBrotliDecompressorSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableBrotliDecompressorSinkControllerPrototype, JSReadableBrotliDecompressorSinkControllerPrototype::Base); const ClassInfo JSBrotliDecompressorSinkPrototype::s_info = { "BrotliDecompressorSink"_s, &Base::s_info, &JSBrotliDecompressorSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSBrotliDecompressorSinkPrototype) }; const ClassInfo JSBrotliDecompressorSink::s_info = { "BrotliDecompressorSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSBrotliDecompressorSink) }; const ClassInfo JSBrotliDecompressorSinkConstructor::s_info = { "BrotliDecompressorSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSBrotliDecompressorSinkConstructor) }; const ClassInfo JSReadableBrotliDecompressorSinkControllerPrototype::s_info = { "ReadableBrotliDecompressorSinkController"_s, &Base::s_info, &JSReadableBrotliDecompressorSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableBrotliDecompressorSinkControllerPrototype) }; const ClassInfo JSReadableBrotliDecompressorSinkController::s_info = { "ReadableBrotliDecompressorSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableBrotliDecompressorSinkController) }; JSBrotliDecompressorSink::~JSBrotliDecompressorSink() { if (m_sinkPtr) { BrotliDecompressorSink__finalize(m_sinkPtr); } } JSReadableBrotliDecompressorSinkController::~JSReadableBrotliDecompressorSinkController() { if (m_sinkPtr) { BrotliDecompressorSink__finalize(m_sinkPtr); } } JSObject* JSBrotliDecompressorSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSBrotliDecompressorSinkPrototype::create(vm, &globalObject, JSBrotliDecompressorSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableBrotliDecompressorSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableBrotliDecompressorSinkControllerPrototype::create(vm, &globalObject, JSReadableBrotliDecompressorSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableBrotliDecompressorSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSBrotliDecompressorSinkConstructor* JSBrotliDecompressorSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSBrotliDecompressorSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliDecompressorSinkConstructor(vm, structure, BrotliDecompressorSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSBrotliDecompressorSink* JSBrotliDecompressorSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSBrotliDecompressorSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliDecompressorSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableBrotliDecompressorSinkController* JSReadableBrotliDecompressorSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableBrotliDecompressorSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableBrotliDecompressorSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSBrotliDecompressorSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSBrotliDecompressorSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return BrotliDecompressorSink__construct(globalObject, callFrame); } void JSBrotliDecompressorSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "BrotliDecompressorSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSBrotliDecompressorSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSBrotliDecompressorSink::info(), JSBrotliDecompressorSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSBrotliDecompressorSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableBrotliDecompressorSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableBrotliDecompressorSinkController::info(), JSReadableBrotliDecompressorSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSBrotliDecompressorSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSBrotliDecompressorSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableBrotliDecompressorSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSBrotliDecompressorSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableBrotliDecompressorSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableBrotliDecompressorSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableBrotliDecompressorSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableBrotliDecompressorSinkController); template void JSBrotliDecompressorSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSBrotliDecompressorSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSBrotliDecompressorSink); void JSReadableBrotliDecompressorSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSBrotliDecompressorSink::destroy(JSCell* cell) { static_cast(cell)->JSBrotliDecompressorSink::~JSBrotliDecompressorSink(); } void JSReadableBrotliDecompressorSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableBrotliDecompressorSinkController::~JSReadableBrotliDecompressorSinkController(); } #pragma mark - BrotliCompressorSink class JSBrotliCompressorSinkPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSBrotliCompressorSinkPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSBrotliCompressorSinkPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliCompressorSinkPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSBrotliCompressorSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSBrotliCompressorSinkPrototype, JSBrotliCompressorSinkPrototype::Base); class JSReadableBrotliCompressorSinkControllerPrototype final : public JSC::JSNonFinalObject { public: using Base = JSC::JSNonFinalObject; static JSReadableBrotliCompressorSinkControllerPrototype* create(JSC::VM& vm, JSGlobalObject* globalObject, JSC::Structure* structure) { JSReadableBrotliCompressorSinkControllerPrototype* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableBrotliCompressorSinkControllerPrototype(vm, globalObject, structure); ptr->finishCreation(vm, globalObject); return ptr; } DECLARE_INFO; template static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return &vm.plainObjectSpace(); } static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } private: JSReadableBrotliCompressorSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure) : Base(vm, structure) { } void finishCreation(JSC::VM&, JSC::JSGlobalObject*); }; STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSReadableBrotliCompressorSinkControllerPrototype, JSReadableBrotliCompressorSinkControllerPrototype::Base); const ClassInfo JSBrotliCompressorSinkPrototype::s_info = { "BrotliCompressorSink"_s, &Base::s_info, &JSBrotliCompressorSinkPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSBrotliCompressorSinkPrototype) }; const ClassInfo JSBrotliCompressorSink::s_info = { "BrotliCompressorSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSBrotliCompressorSink) }; const ClassInfo JSBrotliCompressorSinkConstructor::s_info = { "BrotliCompressorSink"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSBrotliCompressorSinkConstructor) }; const ClassInfo JSReadableBrotliCompressorSinkControllerPrototype::s_info = { "ReadableBrotliCompressorSinkController"_s, &Base::s_info, &JSReadableBrotliCompressorSinkControllerPrototypeTable, nullptr, CREATE_METHOD_TABLE(JSReadableBrotliCompressorSinkControllerPrototype) }; const ClassInfo JSReadableBrotliCompressorSinkController::s_info = { "ReadableBrotliCompressorSinkController"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSReadableBrotliCompressorSinkController) }; JSBrotliCompressorSink::~JSBrotliCompressorSink() { if (m_sinkPtr) { BrotliCompressorSink__finalize(m_sinkPtr); } } JSReadableBrotliCompressorSinkController::~JSReadableBrotliCompressorSinkController() { if (m_sinkPtr) { BrotliCompressorSink__finalize(m_sinkPtr); } } JSObject* JSBrotliCompressorSink::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSBrotliCompressorSinkPrototype::create(vm, &globalObject, JSBrotliCompressorSinkPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } JSObject* JSReadableBrotliCompressorSinkController::createPrototype(VM& vm, JSDOMGlobalObject& globalObject) { return JSReadableBrotliCompressorSinkControllerPrototype::create(vm, &globalObject, JSReadableBrotliCompressorSinkControllerPrototype::createStructure(vm, &globalObject, globalObject.objectPrototype())); } void JSReadableBrotliCompressorSinkController::detach() { m_sinkPtr = nullptr; m_onPull.clear(); auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); m_onClose.clear(); if (readableStream && onClose) { JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); JSC::MarkedArgumentBuffer arguments; arguments.append(readableStream); arguments.append(jsUndefined()); JSC::call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); } m_weakReadableStream.clear(); } JSBrotliCompressorSinkConstructor* JSBrotliCompressorSinkConstructor::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, JSObject* prototype) { JSBrotliCompressorSinkConstructor* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliCompressorSinkConstructor(vm, structure, BrotliCompressorSink__construct); ptr->finishCreation(vm, globalObject, prototype); return ptr; } JSBrotliCompressorSink* JSBrotliCompressorSink::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSBrotliCompressorSink* ptr = new (NotNull, JSC::allocateCell(vm)) JSBrotliCompressorSink(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } JSReadableBrotliCompressorSinkController* JSReadableBrotliCompressorSinkController::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure, void* sinkPtr) { JSReadableBrotliCompressorSinkController* ptr = new (NotNull, JSC::allocateCell(vm)) JSReadableBrotliCompressorSinkController(vm, structure, sinkPtr); ptr->finishCreation(vm); return ptr; } void JSBrotliCompressorSinkConstructor::finishCreation(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { Base::finishCreation(vm); ASSERT(inherits(info())); initializeProperties(vm, globalObject, prototype); } JSC::EncodedJSValue JSC_HOST_CALL_ATTRIBUTES JSBrotliCompressorSinkConstructor::construct(JSC::JSGlobalObject* globalObject, JSC::CallFrame* callFrame) { return BrotliCompressorSink__construct(globalObject, callFrame); } void JSBrotliCompressorSinkConstructor::initializeProperties(VM& vm, JSC::JSGlobalObject* globalObject, JSObject* prototype) { putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSString* nameString = jsNontrivialString(vm, "BrotliCompressorSink"_s); m_originalName.set(vm, this, nameString); putDirect(vm, vm.propertyNames->name, nameString, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); } void JSBrotliCompressorSinkPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSBrotliCompressorSink::info(), JSBrotliCompressorSinkPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSBrotliCompressorSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSReadableBrotliCompressorSinkControllerPrototype::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject) { Base::finishCreation(vm); reifyStaticProperties(vm, JSReadableBrotliCompressorSinkController::info(), JSReadableBrotliCompressorSinkControllerPrototypeTableValues, *this); putDirect(vm, JSC::Identifier::fromString(vm, "sinkId"_s), JSC::jsNumber(JSBrotliCompressorSink::Sink), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum); JSC_TO_STRING_TAG_WITHOUT_TRANSITION(); } void JSBrotliCompressorSink::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSReadableBrotliCompressorSinkController::finishCreation(VM& vm) { Base::finishCreation(vm); ASSERT(inherits(info())); } void JSBrotliCompressorSink::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } void JSReadableBrotliCompressorSinkController::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer) { auto* thisObject = jsCast(cell); if (void* wrapped = thisObject->wrapped()) { analyzer.setWrappedObjectForCell(cell, wrapped); // if (thisObject->scriptExecutionContext()) // analyzer.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string()); } Base::analyzeHeap(cell, analyzer); } template void JSReadableBrotliCompressorSinkController::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSReadableBrotliCompressorSinkController* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); visitor.append(thisObject->m_onPull); visitor.append(thisObject->m_onClose); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSReadableBrotliCompressorSinkController); template void JSBrotliCompressorSink::visitChildrenImpl(JSCell* cell, Visitor& visitor) { JSBrotliCompressorSink* thisObject = jsCast(cell); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); Base::visitChildren(thisObject, visitor); void* ptr = thisObject->m_sinkPtr; if (ptr) visitor.addOpaqueRoot(ptr); } DEFINE_VISIT_CHILDREN(JSBrotliCompressorSink); void JSReadableBrotliCompressorSinkController::start(JSC::JSGlobalObject* globalObject, JSC::JSValue readableStream, JSC::JSFunction* onPull, JSC::JSFunction* onClose) { this->m_weakReadableStream = JSC::Weak(readableStream.getObject()); this->m_onPull.set(globalObject->vm(), this, onPull); this->m_onClose.set(globalObject->vm(), this, onClose); } void JSBrotliCompressorSink::destroy(JSCell* cell) { static_cast(cell)->JSBrotliCompressorSink::~JSBrotliCompressorSink(); } void JSReadableBrotliCompressorSinkController::destroy(JSCell* cell) { static_cast(cell)->JSReadableBrotliCompressorSinkController::~JSReadableBrotliCompressorSinkController(); } JSObject* createJSSinkPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, SinkID sinkID) { switch (sinkID) { case ArrayBufferSink: return JSArrayBufferSinkPrototype::create(vm, globalObject, JSArrayBufferSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case FileSink: return JSFileSinkPrototype::create(vm, globalObject, JSFileSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case HTTPResponseSink: return JSHTTPResponseSinkPrototype::create(vm, globalObject, JSHTTPResponseSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case HTTPSResponseSink: return JSHTTPSResponseSinkPrototype::create(vm, globalObject, JSHTTPSResponseSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case BrotliDecompressorSink: return JSBrotliDecompressorSinkPrototype::create(vm, globalObject, JSBrotliDecompressorSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case BrotliCompressorSink: return JSBrotliCompressorSinkPrototype::create(vm, globalObject, JSBrotliCompressorSinkPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); default: RELEASE_ASSERT_NOT_REACHED(); } } JSObject* createJSSinkControllerPrototype(JSC::VM& vm, JSC::JSGlobalObject* globalObject, SinkID sinkID) { switch (sinkID) { case ArrayBufferSink: return JSReadableArrayBufferSinkControllerPrototype::create(vm, globalObject, JSReadableArrayBufferSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case FileSink: return JSReadableFileSinkControllerPrototype::create(vm, globalObject, JSReadableFileSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case HTTPResponseSink: return JSReadableHTTPResponseSinkControllerPrototype::create(vm, globalObject, JSReadableHTTPResponseSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case HTTPSResponseSink: return JSReadableHTTPSResponseSinkControllerPrototype::create(vm, globalObject, JSReadableHTTPSResponseSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case BrotliDecompressorSink: return JSReadableBrotliDecompressorSinkControllerPrototype::create(vm, globalObject, JSReadableBrotliDecompressorSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); case BrotliCompressorSink: return JSReadableBrotliCompressorSinkControllerPrototype::create(vm, globalObject, JSReadableBrotliCompressorSinkControllerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype())); default: RELEASE_ASSERT_NOT_REACHED(); } } Structure* createJSSinkControllerStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, SinkID sinkID) { switch (sinkID) { case ArrayBufferSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableArrayBufferSinkController::createStructure(vm, globalObject, prototype); } case FileSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableFileSinkController::createStructure(vm, globalObject, prototype); } case HTTPResponseSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableHTTPResponseSinkController::createStructure(vm, globalObject, prototype); } case HTTPSResponseSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableHTTPSResponseSinkController::createStructure(vm, globalObject, prototype); } case BrotliDecompressorSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableBrotliDecompressorSinkController::createStructure(vm, globalObject, prototype); } case BrotliCompressorSink: { auto* prototype = createJSSinkControllerPrototype(vm, globalObject, sinkID); return JSReadableBrotliCompressorSinkController::createStructure(vm, globalObject, prototype); } default: RELEASE_ASSERT_NOT_REACHED(); } } } // namespace WebCore extern "C" JSC__JSValue ArrayBufferSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->ArrayBufferSinkStructure(); return JSC::JSValue::encode(WebCore::JSArrayBufferSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* ArrayBufferSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void ArrayBufferSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue ArrayBufferSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableArrayBufferSinkController* controller = WebCore::JSReadableArrayBufferSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void ArrayBufferSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableArrayBufferSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void ArrayBufferSink__onStart(JSC__JSValue controllerValue) { } extern "C" void ArrayBufferSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableArrayBufferSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" JSC__JSValue FileSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->FileSinkStructure(); return JSC::JSValue::encode(WebCore::JSFileSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* FileSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void FileSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue FileSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableFileSinkController* controller = WebCore::JSReadableFileSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void FileSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableFileSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void FileSink__onStart(JSC__JSValue controllerValue) { } extern "C" void FileSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableFileSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" JSC__JSValue HTTPResponseSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->HTTPResponseSinkStructure(); return JSC::JSValue::encode(WebCore::JSHTTPResponseSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* HTTPResponseSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void HTTPResponseSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue HTTPResponseSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableHTTPResponseSinkController* controller = WebCore::JSReadableHTTPResponseSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void HTTPResponseSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableHTTPResponseSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void HTTPResponseSink__onStart(JSC__JSValue controllerValue) { } extern "C" void HTTPResponseSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableHTTPResponseSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" JSC__JSValue HTTPSResponseSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->HTTPSResponseSinkStructure(); return JSC::JSValue::encode(WebCore::JSHTTPSResponseSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* HTTPSResponseSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void HTTPSResponseSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue HTTPSResponseSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableHTTPSResponseSinkController* controller = WebCore::JSReadableHTTPSResponseSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void HTTPSResponseSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableHTTPSResponseSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void HTTPSResponseSink__onStart(JSC__JSValue controllerValue) { } extern "C" void HTTPSResponseSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableHTTPSResponseSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" JSC__JSValue BrotliDecompressorSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->BrotliDecompressorSinkStructure(); return JSC::JSValue::encode(WebCore::JSBrotliDecompressorSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* BrotliDecompressorSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void BrotliDecompressorSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue BrotliDecompressorSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableBrotliDecompressorSinkController* controller = WebCore::JSReadableBrotliDecompressorSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void BrotliDecompressorSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableBrotliDecompressorSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void BrotliDecompressorSink__onStart(JSC__JSValue controllerValue) { } extern "C" void BrotliDecompressorSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableBrotliDecompressorSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" JSC__JSValue BrotliCompressorSink__createObject(JSC__JSGlobalObject* arg0, void* sinkPtr) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = globalObject->BrotliCompressorSinkStructure(); return JSC::JSValue::encode(WebCore::JSBrotliCompressorSink::create(vm, globalObject, structure, sinkPtr)); } extern "C" void* BrotliCompressorSink__fromJS(JSC__JSGlobalObject* arg0, JSC__JSValue JSValue1) { JSC::VM& vm = WebCore::getVM(arg0); if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return sink->wrapped(); if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue1))) return controller->wrapped(); return nullptr; } extern "C" void BrotliCompressorSink__detachPtr(JSC__JSValue JSValue0) { if (auto* sink = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { sink->detach(); return; } if (auto* controller = JSC::jsDynamicCast(JSC::JSValue::decode(JSValue0))) { controller->detach(); return; } } extern "C" JSC__JSValue BrotliCompressorSink__assignToStream(JSC__JSGlobalObject* arg0, JSC__JSValue stream, void* sinkPtr, void** controllerValue) { auto& vm = arg0->vm(); Zig::GlobalObject* globalObject = reinterpret_cast(arg0); JSC::Structure* structure = WebCore::getDOMStructure(vm, *globalObject); WebCore::JSReadableBrotliCompressorSinkController* controller = WebCore::JSReadableBrotliCompressorSinkController::create(vm, globalObject, structure, sinkPtr); *controllerValue = reinterpret_cast(JSC::JSValue::encode(controller)); return globalObject->assignToStream(JSC::JSValue::decode(stream), controller); } extern "C" void BrotliCompressorSink__onReady(JSC__JSValue controllerValue, JSC__JSValue amt, JSC__JSValue offset) { WebCore::JSReadableBrotliCompressorSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onPull.get(); if (function == nullptr) return; JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; arguments.append(controller); arguments.append(JSC::JSValue::decode(amt)); arguments.append(JSC::JSValue::decode(offset)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); } extern "C" void BrotliCompressorSink__onStart(JSC__JSValue controllerValue) { } extern "C" void BrotliCompressorSink__onClose(JSC__JSValue controllerValue, JSC__JSValue reason) { WebCore::JSReadableBrotliCompressorSinkController* controller = JSC::jsCast(JSC::JSValue::decode(controllerValue).getObject()); JSC::JSFunction* function = controller->m_onClose.get(); if (function == nullptr) return; // only call close once controller->m_onClose.clear(); JSC::JSGlobalObject* globalObject = controller->globalObject(); auto callData = JSC::getCallData(function); JSC::MarkedArgumentBuffer arguments; auto readableStream = controller->m_weakReadableStream.get(); arguments.append(readableStream ? readableStream : JSC::jsUndefined()); arguments.append(JSC::JSValue::decode(reason)); JSC::call(globalObject, function, callData, JSC::jsUndefined(), arguments); }