diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:33 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:33 +0000 |
commit | 086c044dc34dfc0f74fbe41f4ecb402b2cd34884 (patch) | |
tree | a4f824bd33cb075dd5aa3eb5a0a94af221bbe83a /js/xpconnect/loader/mozJSModuleLoader.cpp | |
parent | Adding debian version 124.0.1-1. (diff) | |
download | firefox-086c044dc34dfc0f74fbe41f4ecb402b2cd34884.tar.xz firefox-086c044dc34dfc0f74fbe41f4ecb402b2cd34884.zip |
Merging upstream version 125.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/xpconnect/loader/mozJSModuleLoader.cpp')
-rw-r--r-- | js/xpconnect/loader/mozJSModuleLoader.cpp | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/js/xpconnect/loader/mozJSModuleLoader.cpp b/js/xpconnect/loader/mozJSModuleLoader.cpp index f20306f0a0..017ac32b3b 100644 --- a/js/xpconnect/loader/mozJSModuleLoader.cpp +++ b/js/xpconnect/loader/mozJSModuleLoader.cpp @@ -454,6 +454,12 @@ void mozJSModuleLoader::InitStatics() { MOZ_ASSERT(!sSelf); sSelf = new mozJSModuleLoader(); RegisterWeakMemoryReporter(sSelf); + + dom::AutoJSAPI jsapi; + jsapi.Init(); + JSContext* cx = jsapi.cx(); + sSelf->InitSharedGlobal(cx); + NonSharedGlobalSyncModuleLoaderScope::InitStatics(); } @@ -486,12 +492,16 @@ void mozJSModuleLoader::ShutdownLoaders() { } } -mozJSModuleLoader* mozJSModuleLoader::GetOrCreateDevToolsLoader() { +mozJSModuleLoader* mozJSModuleLoader::GetOrCreateDevToolsLoader( + JSContext* aCx) { if (sDevToolsLoader) { return sDevToolsLoader; } sDevToolsLoader = new mozJSModuleLoader(); RegisterWeakMemoryReporter(sDevToolsLoader); + + sDevToolsLoader->InitSharedGlobal(aCx); + return sDevToolsLoader; } @@ -682,26 +692,22 @@ void mozJSModuleLoader::CreateLoaderGlobal(JSContext* aCx, aGlobal.set(global); } -JSObject* mozJSModuleLoader::GetSharedGlobal(JSContext* aCx) { - if (!mLoaderGlobal) { - JS::RootedObject globalObj(aCx); +void mozJSModuleLoader::InitSharedGlobal(JSContext* aCx) { + JS::RootedObject globalObj(aCx); - CreateLoaderGlobal( - aCx, IsDevToolsLoader() ? "DevTools global"_ns : "shared JSM global"_ns, - &globalObj); + CreateLoaderGlobal( + aCx, IsDevToolsLoader() ? "DevTools global"_ns : "shared JSM global"_ns, + &globalObj); - // If we fail to create a module global this early, we're not going to - // get very far, so just bail out now. - MOZ_RELEASE_ASSERT(globalObj); - mLoaderGlobal = globalObj; - - // AutoEntryScript required to invoke debugger hook, which is a - // Gecko-specific concept at present. - dom::AutoEntryScript aes(globalObj, "module loader report global"); - JS_FireOnNewGlobalObject(aes.cx(), globalObj); - } + // If we fail to create a module global this early, we're not going to + // get very far, so just bail out now. + MOZ_RELEASE_ASSERT(globalObj); + mLoaderGlobal = globalObj; - return mLoaderGlobal; + // AutoEntryScript required to invoke debugger hook, which is a + // Gecko-specific concept at present. + dom::AutoEntryScript aes(globalObj, "module loader report global"); + JS_FireOnNewGlobalObject(aes.cx(), globalObj); } // Read script file on the main thread and pass it back to worker. @@ -970,8 +976,8 @@ JSObject* mozJSModuleLoader::PrepareObjectForLocation(JSContext* aCx, nsIFile* aModuleFile, nsIURI* aURI, bool aRealFile) { - RootedObject globalObj(aCx, GetSharedGlobal(aCx)); - NS_ENSURE_TRUE(globalObj, nullptr); + RootedObject globalObj(aCx, GetSharedGlobal()); + MOZ_ASSERT(globalObj); JSAutoRealm ar(aCx, globalObj); // |thisObj| is the object we set properties on for a particular .jsm. @@ -2018,8 +2024,8 @@ nsresult mozJSModuleLoader::ImportESModule( MarkerInnerWindowIdFromJSContext(aCx)), Substring(aLocation, 0, std::min(size_t(128), aLocation.Length()))); - RootedObject globalObj(aCx, GetSharedGlobal(aCx)); - NS_ENSURE_TRUE(globalObj, NS_ERROR_FAILURE); + RootedObject globalObj(aCx, GetSharedGlobal()); + MOZ_ASSERT(globalObj); MOZ_ASSERT_IF(NS_IsMainThread(), xpc::Scriptability::Get(globalObj).Allowed()); |