diff options
author | 2021-09-05 02:05:45 -0700 | |
---|---|---|
committer | 2021-09-05 02:05:45 -0700 | |
commit | c20df72d7319ff55ed4e5c9c7ff1abaab951d0bd (patch) | |
tree | c4e9489eb072f08af62ad58ee57cf04e436f6ef7 /src/javascript/jsc | |
parent | b8941666b46f9b7aa46e3f3db42b429a0d1d26cd (diff) | |
download | bun-c20df72d7319ff55ed4e5c9c7ff1abaab951d0bd.tar.gz bun-c20df72d7319ff55ed4e5c9c7ff1abaab951d0bd.tar.zst bun-c20df72d7319ff55ed4e5c9c7ff1abaab951d0bd.zip |
more mutexes
Former-commit-id: 52966012b4b74d24ab28a0c75740aef35fb75327
Diffstat (limited to 'src/javascript/jsc')
-rw-r--r-- | src/javascript/jsc/bindings/SourceProvider.cpp | 38 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/ZigGlobalObject.cpp | 10 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/ZigSourceProvider.cpp | 9 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/ZigSourceProvider.h | 2 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/bindings.cpp | 3 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/bindings.zig | 17 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/headers-cpp.h | 2 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/headers.h | 4 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/headers.zig | 2 |
9 files changed, 34 insertions, 53 deletions
diff --git a/src/javascript/jsc/bindings/SourceProvider.cpp b/src/javascript/jsc/bindings/SourceProvider.cpp deleted file mode 100644 index ceea95ab9..000000000 --- a/src/javascript/jsc/bindings/SourceProvider.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "root.h" -#include <JavaScriptCore/SourceProvider.h> - -#include <wtf/Lock.h> - -namespace JSC { - -// SourceProvider::SourceProvider(const SourceOrigin&, String&& sourceURL, const TextPosition& startPosition, SourceProviderSourceType) { - -// } - - -// SourceProvider::SourceProvider(const SourceOrigin& sourceOrigin, String&& sourceURL, const TextPosition& startPosition, SourceProviderSourceType sourceType) -// : m_sourceType(sourceType) -// , m_sourceOrigin(sourceOrigin) -// , m_sourceURL(WTFMove(sourceURL)) -// , m_startPosition(startPosition) -// { -// } - -// SourceProvider::~SourceProvider() -// { -// } - -// static Lock providerIdLock; - -// void SourceProvider::getID() -// { -// Locker locker { providerIdLock }; -// if (!m_id) { -// static intptr_t nextProviderID = 0; -// m_id = ++nextProviderID; -// RELEASE_ASSERT(m_id); -// } -// } - -} // namespace JSC - diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.cpp b/src/javascript/jsc/bindings/ZigGlobalObject.cpp index 0d9022a30..2b95b108a 100644 --- a/src/javascript/jsc/bindings/ZigGlobalObject.cpp +++ b/src/javascript/jsc/bindings/ZigGlobalObject.cpp @@ -82,14 +82,16 @@ namespace JSCastingHelpers = JSC::JSCastingHelpers; extern "C" JSC__JSGlobalObject *Zig__GlobalObject__create(JSClassRef *globalObjectClass, int count, void *console_client) { + JSC::Options::useSourceProviderCache() = true; + JSC::Options::useUnlinkedCodeBlockJettisoning() = false; + JSC::Options::useTopLevelAwait() = true; + JSC::Options::exposeInternalModuleLoader() = true; + std::set_terminate([]() { Zig__GlobalObject__onCrash(); }); WTF::initializeMainThread(); JSC::initialize(); // JSC::Options::useCodeCache() = false; - JSC::Options::useSourceProviderCache() = true; - JSC::Options::useUnlinkedCodeBlockJettisoning() = false; - JSC::Options::useTopLevelAwait() = true; JSC::VM &vm = JSC::VM::create(JSC::LargeHeap).leakRef(); vm.heap.acquireAccess(); @@ -288,8 +290,6 @@ extern "C" bool Zig__GlobalObject__resetModuleRegistryMap(JSC__JSGlobalObject *g obj->putDirect(globalObject->vm(), identifier, map->clone(globalObject, globalObject->vm(), globalObject->mapStructure())); - vm.codeCache()->write(vm); - vm.shrinkFootprintWhenIdle(); // vm.deleteAllLinkedCode(JSC::DeleteAllCodeEffort::DeleteAllCodeIfNotCollecting); // JSC::Heap::PreventCollectionScope(vm.heap); diff --git a/src/javascript/jsc/bindings/ZigSourceProvider.cpp b/src/javascript/jsc/bindings/ZigSourceProvider.cpp index a2cb86c39..509732307 100644 --- a/src/javascript/jsc/bindings/ZigSourceProvider.cpp +++ b/src/javascript/jsc/bindings/ZigSourceProvider.cpp @@ -1,5 +1,6 @@ #include "ZigSourceProvider.h" #include "helpers.h" +#include "root.h" #include <JavaScriptCore/BytecodeCacheError.h> #include <JavaScriptCore/CodeCache.h> @@ -39,12 +40,8 @@ Ref<SourceProvider> SourceProvider::create(ResolvedSource resolvedSource) { JSC::SourceProviderSourceType::Module)); } else { - Ref<WTF::ExternalStringImpl> stringImpl_ = WTF::ExternalStringImpl::create( - resolvedSource.source_code.ptr, resolvedSource.source_code.len, - [=](WTF::ExternalStringImpl *str, void *ptr, unsigned int len) { - // ZigString__free((const unsigned char *)ptr, len, - // allocator); - }); + Ref<WTF::ExternalStringImpl> stringImpl_ = WTF::ExternalStringImpl::createStatic( + resolvedSource.source_code.ptr, resolvedSource.source_code.len); return adoptRef(*new SourceProvider( resolvedSource, reinterpret_cast<WTF::StringImpl *>(stringImpl_.ptr()), JSC::SourceOrigin(WTF::URL::fileURLWithFileSystemPath(toString(resolvedSource.source_url))), diff --git a/src/javascript/jsc/bindings/ZigSourceProvider.h b/src/javascript/jsc/bindings/ZigSourceProvider.h index 41002af97..24ae82af8 100644 --- a/src/javascript/jsc/bindings/ZigSourceProvider.h +++ b/src/javascript/jsc/bindings/ZigSourceProvider.h @@ -7,7 +7,7 @@ namespace JSC { class Structure; class Identifier; class SourceCodeKey; - +class SourceProvider; } // namespace JSC #include "ZigConsoleClient.h" diff --git a/src/javascript/jsc/bindings/bindings.cpp b/src/javascript/jsc/bindings/bindings.cpp index 2afe01617..60a1dd9a6 100644 --- a/src/javascript/jsc/bindings/bindings.cpp +++ b/src/javascript/jsc/bindings/bindings.cpp @@ -1434,6 +1434,9 @@ const WTF__StringImpl *JSC__PropertyName__uid(JSC__PropertyName *arg0) { return #pragma mark - JSC::VM +void JSC__VM__shrinkFootprint(JSC__VM *arg0) { arg0->shrinkFootprintWhenIdle(); }; +void JSC__VM__whenIdle(JSC__VM *arg0, void (*ArgFn1)()) { arg0->whenIdle(ArgFn1); }; + JSC__JSLock *JSC__VM__apiLock(JSC__VM *arg0) { return makeRefPtr((*arg0).apiLock()).leakRef(); } JSC__VM *JSC__VM__create(unsigned char HeapType0) { JSC::VM *vm = diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig index 65a8bef94..66a938199 100644 --- a/src/javascript/jsc/bindings/bindings.zig +++ b/src/javascript/jsc/bindings/bindings.zig @@ -1555,6 +1555,21 @@ pub const VM = extern struct { return cppFn("deleteAllCode", .{ vm, global_object }); } + pub fn whenIdle( + vm: *VM, + callback: fn (...) callconv(.C) void, + ) void { + return cppFn("whenIdle", .{ vm, callback }); + } + + pub fn shrinkFootprint( + vm: *VM, + ) void { + return cppFn("shrinkFootprint", .{ + vm, + }); + } + pub fn setExecutionForbidden(vm: *VM, forbidden: bool) void { cppFn("setExecutionForbidden", .{ vm, forbidden }); } @@ -1597,7 +1612,7 @@ pub const VM = extern struct { }); } - pub const Extern = [_][]const u8{ "deleteAllCode", "apiLock", "create", "deinit", "setExecutionForbidden", "executionForbidden", "isEntered", "throwError", "drainMicrotasks" }; + pub const Extern = [_][]const u8{ "deleteAllCode", "apiLock", "create", "deinit", "setExecutionForbidden", "executionForbidden", "isEntered", "throwError", "drainMicrotasks", "whenIdle", "shrinkFootprint" }; }; pub const ThrowScope = extern struct { diff --git a/src/javascript/jsc/bindings/headers-cpp.h b/src/javascript/jsc/bindings/headers-cpp.h index 312476e25..0013a2306 100644 --- a/src/javascript/jsc/bindings/headers-cpp.h +++ b/src/javascript/jsc/bindings/headers-cpp.h @@ -1,4 +1,4 @@ -//-- AUTOGENERATED FILE -- 1630718473 +//-- AUTOGENERATED FILE -- 1630806668 // clang-format off #pragma once diff --git a/src/javascript/jsc/bindings/headers.h b/src/javascript/jsc/bindings/headers.h index 3671095cc..c135d7ed4 100644 --- a/src/javascript/jsc/bindings/headers.h +++ b/src/javascript/jsc/bindings/headers.h @@ -1,4 +1,4 @@ -//-- AUTOGENERATED FILE -- 1630718473 +//-- AUTOGENERATED FILE -- 1630806668 // clang-format: off #pragma once @@ -493,7 +493,9 @@ CPP_DECL void JSC__VM__drainMicrotasks(JSC__VM* arg0); CPP_DECL bool JSC__VM__executionForbidden(JSC__VM* arg0); CPP_DECL bool JSC__VM__isEntered(JSC__VM* arg0); CPP_DECL void JSC__VM__setExecutionForbidden(JSC__VM* arg0, bool arg1); +CPP_DECL void JSC__VM__shrinkFootprint(JSC__VM* arg0); CPP_DECL bool JSC__VM__throwError(JSC__VM* arg0, JSC__JSGlobalObject* arg1, JSC__ThrowScope* arg2, const unsigned char* arg3, size_t arg4); +CPP_DECL void JSC__VM__whenIdle(JSC__VM* arg0, void (* ArgFn1)()); #pragma mark - JSC::ThrowScope diff --git a/src/javascript/jsc/bindings/headers.zig b/src/javascript/jsc/bindings/headers.zig index 98db40c44..0227a5d87 100644 --- a/src/javascript/jsc/bindings/headers.zig +++ b/src/javascript/jsc/bindings/headers.zig @@ -307,7 +307,9 @@ pub extern fn JSC__VM__drainMicrotasks(arg0: [*c]JSC__VM) void; pub extern fn JSC__VM__executionForbidden(arg0: [*c]JSC__VM) bool; pub extern fn JSC__VM__isEntered(arg0: [*c]JSC__VM) bool; pub extern fn JSC__VM__setExecutionForbidden(arg0: [*c]JSC__VM, arg1: bool) void; +pub extern fn JSC__VM__shrinkFootprint(arg0: [*c]JSC__VM) void; pub extern fn JSC__VM__throwError(arg0: [*c]JSC__VM, arg1: [*c]JSC__JSGlobalObject, arg2: [*c]JSC__ThrowScope, arg3: [*c]const u8, arg4: usize) bool; +pub extern fn JSC__VM__whenIdle(arg0: [*c]JSC__VM, ArgFn1: ?fn (...) callconv(.C) void) void; pub extern fn JSC__ThrowScope__clearException(arg0: [*c]JSC__ThrowScope) void; pub extern fn JSC__ThrowScope__declare(arg0: [*c]JSC__VM, arg1: [*c]u8, arg2: [*c]u8, arg3: usize) bJSC__ThrowScope; pub extern fn JSC__ThrowScope__exception(arg0: [*c]JSC__ThrowScope) [*c]JSC__Exception; |