Fix bug causing GC to sometimes never run

This commit is contained in:
Jarred Sumner
2022-03-14 23:36:45 -07:00
parent 2d1538e698
commit 7b8113c7c7
2 changed files with 15 additions and 2 deletions

View File

@@ -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());

View File

@@ -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 {