diff options
author | 2022-03-14 23:36:45 -0700 | |
---|---|---|
committer | 2022-03-14 23:36:45 -0700 | |
commit | 7b8113c7c70bb3bf6916404123e1c30c233a2d6c (patch) | |
tree | 1682386ef7be08e58f5b8d03aa03be52de4e453d /src/javascript | |
parent | 2d1538e698654150a00a1b2187dfc811a0d15395 (diff) | |
download | bun-7b8113c7c70bb3bf6916404123e1c30c233a2d6c.tar.gz bun-7b8113c7c70bb3bf6916404123e1c30c233a2d6c.tar.zst bun-7b8113c7c70bb3bf6916404123e1c30c233a2d6c.zip |
Fix bug causing GC to sometimes never run
Diffstat (limited to 'src/javascript')
-rw-r--r-- | src/javascript/jsc/bindings/bindings.cpp | 8 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/bindings.zig | 9 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/javascript/jsc/bindings/bindings.cpp b/src/javascript/jsc/bindings/bindings.cpp index e9ee4b380..874cc78e8 100644 --- a/src/javascript/jsc/bindings/bindings.cpp +++ b/src/javascript/jsc/bindings/bindings.cpp @@ -7,6 +7,7 @@ #include <JavaScriptCore/BytecodeIndex.h> #include <JavaScriptCore/CodeBlock.h> #include <JavaScriptCore/Completion.h> +#include <JavaScriptCore/DeferredWorkTimer.h> #include <JavaScriptCore/ErrorInstance.h> #include <JavaScriptCore/ExceptionHelpers.h> #include <JavaScriptCore/ExceptionScope.h> @@ -740,7 +741,7 @@ JSC__JSValue ZigString__to16BitValue(const ZigString* arg0, JSC__JSGlobalObject* return JSC::JSValue::encode(JSC::JSValue(JSC::jsString(arg1->vm(), str))); } -void free_global_string(void* str, void* ptr, unsigned len) +static void free_global_string(void* str, void* ptr, unsigned len) { ZigString__free_global(reinterpret_cast<const unsigned char*>(ptr), len); } @@ -2179,6 +2180,11 @@ void JSC__VM__deferGC(JSC__VM* vm, void* ctx, void (*callback)(void* arg0)) callback(ctx); } +void JSC__VM__doWork(JSC__VM* vm) +{ + vm->deferredWorkTimer->runRunLoop(); +} + void JSC__VM__deleteAllCode(JSC__VM* arg1, JSC__JSGlobalObject* globalObject) { JSC::JSLockHolder locker(globalObject->vm()); diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig index 25adec479..ed83e6e14 100644 --- a/src/javascript/jsc/bindings/bindings.zig +++ b/src/javascript/jsc/bindings/bindings.zig @@ -2502,7 +2502,14 @@ pub const VM = extern struct { }); } - pub const Extern = [_][]const u8{ "deferGC", "holdAPILock", "runGC", "generateHeapSnapshot", "isJITEnabled", "deleteAllCode", "create", "deinit", "setExecutionForbidden", "executionForbidden", "isEntered", "throwError", "drainMicrotasks", "whenIdle", "shrinkFootprint", "setExecutionTimeLimit", "clearExecutionTimeLimit" }; + pub fn doWork( + vm: *VM, + ) void { + return cppFn("doWork", .{ + vm, + }); + } + pub const Extern = [_][]const u8{ "doWork", "deferGC", "holdAPILock", "runGC", "generateHeapSnapshot", "isJITEnabled", "deleteAllCode", "create", "deinit", "setExecutionForbidden", "executionForbidden", "isEntered", "throwError", "drainMicrotasks", "whenIdle", "shrinkFootprint", "setExecutionTimeLimit", "clearExecutionTimeLimit" }; }; pub const ThrowScope = extern struct { |