JSInternalPromise* loadModule(ExecState* exec, const SourceCode& source) { JSLockHolder lock(exec); RELEASE_ASSERT(exec->vm().atomicStringTable() == wtfThreadData().atomicStringTable()); RELEASE_ASSERT(!exec->vm().isCollectorBusy()); Symbol* key = createSymbolForEntryPointModule(exec->vm()); JSGlobalObject* globalObject = exec->vmEntryGlobalObject(); // Insert the given source code to the ModuleLoader registry as the fetched registry entry. globalObject->moduleLoader()->provide(exec, key, JSModuleLoader::Status::Fetch, source.view().toString()); if (exec->hadException()) return rejectPromise(exec, globalObject); return loadModule(lock, exec, globalObject, key, jsUndefined()); }
JSInternalPromise* loadAndEvaluateModule(ExecState* exec, const SourceCode& source, JSValue scriptFetcher) { VM& vm = exec->vm(); JSLockHolder lock(vm); auto scope = DECLARE_THROW_SCOPE(vm); RELEASE_ASSERT(vm.atomicStringTable() == wtfThreadData().atomicStringTable()); RELEASE_ASSERT(!vm.isCollectorBusyOnCurrentThread()); Symbol* key = createSymbolForEntryPointModule(vm); JSGlobalObject* globalObject = exec->vmEntryGlobalObject(); // Insert the given source code to the ModuleLoader registry as the fetched registry entry. globalObject->moduleLoader()->provide(exec, key, JSModuleLoader::Status::Fetch, source); RETURN_IF_EXCEPTION(scope, rejectPromise(exec, globalObject)); return loadAndEvaluateModule(lock, exec, globalObject, key, jsUndefined(), scriptFetcher); }