diff options
Diffstat (limited to 'src/javascript/jsc/bindings/ZigConsoleClient.cpp')
-rw-r--r-- | src/javascript/jsc/bindings/ZigConsoleClient.cpp | 206 |
1 files changed, 96 insertions, 110 deletions
diff --git a/src/javascript/jsc/bindings/ZigConsoleClient.cpp b/src/javascript/jsc/bindings/ZigConsoleClient.cpp index b88bb8064..9e7bf7d3f 100644 --- a/src/javascript/jsc/bindings/ZigConsoleClient.cpp +++ b/src/javascript/jsc/bindings/ZigConsoleClient.cpp @@ -3,10 +3,9 @@ #include "ZigConsoleClient.h" #include <JavaScriptCore/ConsoleClient.h> #include <JavaScriptCore/ConsoleMessage.h> +#include <JavaScriptCore/JSString.h> #include <JavaScriptCore/ScriptArguments.h> #include <wtf/text/WTFString.h> -#include <JavaScriptCore/JSString.h> - using ScriptArguments = Inspector::ScriptArguments; using MessageType = JSC::MessageType; using MessageLevel = JSC::MessageLevel; @@ -14,124 +13,111 @@ using JSGlobalObject = JSC__JSGlobalObject; using String = WTF::String; -extern "C" { -JSC__JSValue Inspector__ScriptArguments__argumentAt( Inspector__ScriptArguments* arg0, size_t i) { -return JSC::JSValue::encode(arg0->argumentAt(i)); -} -size_t Inspector__ScriptArguments__argumentCount( Inspector__ScriptArguments* arg0) { - return arg0->argumentCount(); -} -bWTF__String Inspector__ScriptArguments__getFirstArgumentAsString( Inspector__ScriptArguments* arg0) { - auto scope = DECLARE_CATCH_SCOPE(arg0->globalObject()->vm()); - JSC::JSValue val0 = arg0->argumentAt(0); - auto type = val0.asCell()->type(); - Wrap<WTF::String, bWTF__String> wrap; - wrap.cpp = new (wrap.alignedBuffer()) WTF::String(val0.getString(arg0->globalObject()) ); - scope.clearException(); - return wrap.result; -} +namespace JSC { -bool Inspector__ScriptArguments__isEqual( Inspector__ScriptArguments* arg0, Inspector__ScriptArguments* arg1) { - return arg0->isEqual(*arg1); -} +ALWAYS_INLINE GCDeferralContext::GCDeferralContext(Heap &heap) : m_heap(heap) {} -void Inspector__ScriptArguments__release(Inspector__ScriptArguments* arg0) { - auto count = arg0->argumentCount(); - for (int i = 0; i < count; i++) { - JSC::gcUnprotect(arg0->argumentAt(i)); - } - arg0->deref(); -} +ALWAYS_INLINE GCDeferralContext::~GCDeferralContext() { + if constexpr (validateDFGDoesGC) m_heap.verifyCanGC(); + if (UNLIKELY(m_shouldGC)) m_heap.collectIfNecessaryOrDefer(); } -void Zig::ConsoleClient::messageWithTypeAndLevel(MessageType type, MessageLevel level, JSC::JSGlobalObject* globalObject, Ref<ScriptArguments>&& arguments) { - // JSC::JSLockHolder holder(arguments->globalObject()->vm()); - - auto args = arguments.ptr(); - JSC__JSValue jsArgs[255]; - auto count = std::min(args->argumentCount(), (size_t)255); - for (size_t i = 0; i < count; i++) { - auto val = args->argumentAt(i); - // JSC::gcProtect(val); - jsArgs[i] = JSC::JSValue::encode(val); - - } - - auto scope = DECLARE_THROW_SCOPE(globalObject->vm()); - Zig__ConsoleClient__messageWithTypeAndLevel( - this->m_client, - static_cast<uint32_t>(type), - static_cast<uint32_t>(level), - globalObject, - jsArgs, - count - ); - scope.clearException(); - - // for (size_t i = 0; i < count; i++) { - // JSC::gcUnprotect(JSC::JSValue::decode(jsArgs[i])); - // } +} // namespace JSC +extern "C" { +JSC__JSValue Inspector__ScriptArguments__argumentAt(Inspector__ScriptArguments *arg0, size_t i) { + return JSC::JSValue::encode(arg0->argumentAt(i)); +} +size_t Inspector__ScriptArguments__argumentCount(Inspector__ScriptArguments *arg0) { + return arg0->argumentCount(); +} +bWTF__String +Inspector__ScriptArguments__getFirstArgumentAsString(Inspector__ScriptArguments *arg0) { + auto scope = DECLARE_CATCH_SCOPE(arg0->globalObject()->vm()); + JSC::JSValue val0 = arg0->argumentAt(0); + auto type = val0.asCell()->type(); + Wrap<WTF::String, bWTF__String> wrap; + wrap.cpp = new (wrap.alignedBuffer()) WTF::String(val0.getString(arg0->globalObject())); + scope.clearException(); + return wrap.result; } -void Zig::ConsoleClient::count(JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__count(this->m_client, globalObject, ptr, label.length()); + +bool Inspector__ScriptArguments__isEqual(Inspector__ScriptArguments *arg0, + Inspector__ScriptArguments *arg1) { + return arg0->isEqual(*arg1); } -void Zig::ConsoleClient::countReset(JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__countReset(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::profile(JSC::JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__profile(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::profileEnd(JSC::JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__profileEnd(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::takeHeapSnapshot(JSC::JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__takeHeapSnapshot(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::time(JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__time(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::timeLog(JSGlobalObject* globalObject, const String& label, Ref<ScriptArguments>&& arguments) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__timeLog(this->m_client, globalObject, ptr, label.length(), arguments.ptr()); -} -void Zig::ConsoleClient::timeEnd(JSGlobalObject* globalObject, const String& label) -{ - auto ptr = label.characters8(); - Zig__ConsoleClient__timeEnd(this->m_client, globalObject, ptr, label.length()); -} -void Zig::ConsoleClient::timeStamp(JSGlobalObject* globalObject, Ref<ScriptArguments>&& args) -{ - Zig__ConsoleClient__timeStamp(this->m_client, globalObject, args.ptr()); -} -void Zig::ConsoleClient::record(JSGlobalObject*, Ref<ScriptArguments>&&) -{ - -} -void Zig::ConsoleClient::recordEnd(JSGlobalObject*, Ref<ScriptArguments>&&) -{ +void Inspector__ScriptArguments__release(Inspector__ScriptArguments *arg0) { + auto count = arg0->argumentCount(); + for (int i = 0; i < count; i++) { JSC::gcUnprotect(arg0->argumentAt(i)); } + arg0->deref(); +} +} +void Zig::ConsoleClient::messageWithTypeAndLevel(MessageType type, MessageLevel level, + JSC::JSGlobalObject *globalObject, + Ref<ScriptArguments> &&arguments) { + JSC::VM &vm = globalObject->vm(); + JSC::GCDeferralContext deferralContext(vm.heap); + JSC::DisallowGC disallowGC; + auto args = arguments.ptr(); + JSC__JSValue jsArgs[255]; + + auto count = std::min(args->argumentCount(), (size_t)255); + for (size_t i = 0; i < count; i++) { + auto val = args->argumentAt(i); + // JSC::gcProtect(val); + jsArgs[i] = JSC::JSValue::encode(val); + } + + auto scope = DECLARE_THROW_SCOPE(vm); + Zig__ConsoleClient__messageWithTypeAndLevel(this->m_client, static_cast<uint32_t>(type), + static_cast<uint32_t>(level), globalObject, jsArgs, + count); + scope.clearException(); + // for (size_t i = 0; i < count; i++) { + // JSC::gcUnprotect(JSC::JSValue::decode(jsArgs[i])); + // } } -void Zig::ConsoleClient::screenshot(JSGlobalObject*, Ref<ScriptArguments>&&) -{ - +void Zig::ConsoleClient::count(JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__count(this->m_client, globalObject, ptr, label.length()); } -void Zig::ConsoleClient::warnUnimplemented(const String& method) -{ -}
\ No newline at end of file +void Zig::ConsoleClient::countReset(JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__countReset(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::profile(JSC::JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__profile(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::profileEnd(JSC::JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__profileEnd(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::takeHeapSnapshot(JSC::JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__takeHeapSnapshot(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::time(JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__time(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::timeLog(JSGlobalObject *globalObject, const String &label, + Ref<ScriptArguments> &&arguments) { + auto ptr = label.characters8(); + Zig__ConsoleClient__timeLog(this->m_client, globalObject, ptr, label.length(), arguments.ptr()); +} +void Zig::ConsoleClient::timeEnd(JSGlobalObject *globalObject, const String &label) { + auto ptr = label.characters8(); + Zig__ConsoleClient__timeEnd(this->m_client, globalObject, ptr, label.length()); +} +void Zig::ConsoleClient::timeStamp(JSGlobalObject *globalObject, Ref<ScriptArguments> &&args) { + Zig__ConsoleClient__timeStamp(this->m_client, globalObject, args.ptr()); +} +void Zig::ConsoleClient::record(JSGlobalObject *, Ref<ScriptArguments> &&) {} +void Zig::ConsoleClient::recordEnd(JSGlobalObject *, Ref<ScriptArguments> &&) {} +void Zig::ConsoleClient::screenshot(JSGlobalObject *, Ref<ScriptArguments> &&) {} +void Zig::ConsoleClient::warnUnimplemented(const String &method) {}
\ No newline at end of file |