mirror of
https://github.com/oven-sh/bun
synced 2026-02-12 20:09:04 +00:00
@@ -128,6 +128,34 @@ JSC::JSInternalPromise* bakeModuleLoaderFetch(JSC::JSGlobalObject* globalObject,
|
||||
return Zig::GlobalObject::moduleLoaderFetch(globalObject, loader, key, parameters, script);
|
||||
}
|
||||
|
||||
#define INHERIT_HOOK_METHOD(name) \
|
||||
Zig::GlobalObject::s_globalObjectMethodTable.name
|
||||
|
||||
const JSC::GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = {
|
||||
INHERIT_HOOK_METHOD(supportsRichSourceInfo),
|
||||
INHERIT_HOOK_METHOD(shouldInterruptScript),
|
||||
INHERIT_HOOK_METHOD(javaScriptRuntimeFlags),
|
||||
INHERIT_HOOK_METHOD(queueMicrotaskToEventLoop),
|
||||
INHERIT_HOOK_METHOD(shouldInterruptScriptBeforeTimeout),
|
||||
bakeModuleLoaderImportModule,
|
||||
bakeModuleLoaderResolve,
|
||||
bakeModuleLoaderFetch,
|
||||
INHERIT_HOOK_METHOD(moduleLoaderCreateImportMetaProperties),
|
||||
INHERIT_HOOK_METHOD(moduleLoaderEvaluate),
|
||||
INHERIT_HOOK_METHOD(promiseRejectionTracker),
|
||||
INHERIT_HOOK_METHOD(reportUncaughtExceptionAtEventLoop),
|
||||
INHERIT_HOOK_METHOD(currentScriptExecutionOwner),
|
||||
INHERIT_HOOK_METHOD(scriptExecutionStatus),
|
||||
INHERIT_HOOK_METHOD(reportViolationForUnsafeEval),
|
||||
INHERIT_HOOK_METHOD(defaultLanguage),
|
||||
INHERIT_HOOK_METHOD(compileStreaming),
|
||||
INHERIT_HOOK_METHOD(instantiateStreaming),
|
||||
INHERIT_HOOK_METHOD(deriveShadowRealmGlobalObject),
|
||||
INHERIT_HOOK_METHOD(codeForEval),
|
||||
INHERIT_HOOK_METHOD(canCompileStrings),
|
||||
INHERIT_HOOK_METHOD(trustedScriptStructure),
|
||||
};
|
||||
|
||||
GlobalObject* GlobalObject::create(JSC::VM& vm, JSC::Structure* structure,
|
||||
const JSC::GlobalObjectMethodTable* methodTable)
|
||||
{
|
||||
@@ -153,40 +181,6 @@ JSC::Structure* GlobalObject::createStructure(JSC::VM& vm)
|
||||
struct BunVirtualMachine;
|
||||
extern "C" BunVirtualMachine* Bun__getVM();
|
||||
|
||||
const JSC::GlobalObjectMethodTable& GlobalObject::globalObjectMethodTable()
|
||||
{
|
||||
const auto& parent = Zig::GlobalObject::globalObjectMethodTable();
|
||||
#define INHERIT_HOOK_METHOD(name) \
|
||||
parent.name
|
||||
|
||||
static const JSC::GlobalObjectMethodTable table = {
|
||||
INHERIT_HOOK_METHOD(supportsRichSourceInfo),
|
||||
INHERIT_HOOK_METHOD(shouldInterruptScript),
|
||||
INHERIT_HOOK_METHOD(javaScriptRuntimeFlags),
|
||||
INHERIT_HOOK_METHOD(queueMicrotaskToEventLoop),
|
||||
INHERIT_HOOK_METHOD(shouldInterruptScriptBeforeTimeout),
|
||||
bakeModuleLoaderImportModule,
|
||||
bakeModuleLoaderResolve,
|
||||
bakeModuleLoaderFetch,
|
||||
INHERIT_HOOK_METHOD(moduleLoaderCreateImportMetaProperties),
|
||||
INHERIT_HOOK_METHOD(moduleLoaderEvaluate),
|
||||
INHERIT_HOOK_METHOD(promiseRejectionTracker),
|
||||
INHERIT_HOOK_METHOD(reportUncaughtExceptionAtEventLoop),
|
||||
INHERIT_HOOK_METHOD(currentScriptExecutionOwner),
|
||||
INHERIT_HOOK_METHOD(scriptExecutionStatus),
|
||||
INHERIT_HOOK_METHOD(reportViolationForUnsafeEval),
|
||||
INHERIT_HOOK_METHOD(defaultLanguage),
|
||||
INHERIT_HOOK_METHOD(compileStreaming),
|
||||
INHERIT_HOOK_METHOD(instantiateStreaming),
|
||||
INHERIT_HOOK_METHOD(deriveShadowRealmGlobalObject),
|
||||
INHERIT_HOOK_METHOD(codeForEval),
|
||||
INHERIT_HOOK_METHOD(canCompileStrings),
|
||||
INHERIT_HOOK_METHOD(trustedScriptStructure),
|
||||
};
|
||||
#undef INHERIT_HOOK_METHOD
|
||||
return table;
|
||||
}
|
||||
|
||||
// A lot of this function is taken from 'Zig__GlobalObject__create'
|
||||
// TODO: remove this entire method
|
||||
extern "C" GlobalObject* BakeCreateProdGlobal(void* console)
|
||||
@@ -199,7 +193,7 @@ extern "C" GlobalObject* BakeCreateProdGlobal(void* console)
|
||||
|
||||
JSC::Structure* structure = Bake::GlobalObject::createStructure(vm);
|
||||
Bake::GlobalObject* global = Bake::GlobalObject::create(
|
||||
vm, structure, &Bake::GlobalObject::globalObjectMethodTable());
|
||||
vm, structure, &Bake::GlobalObject::s_globalObjectMethodTable);
|
||||
if (!global)
|
||||
BUN_PANIC("Failed to create BakeGlobalObject");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user