tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit f9e1c5eb8c9a4c082cd5ba7b2f673c50b13c75e4
parent 7fa3a4ebaf7e4ee800d55b74ead6913e389e333b
Author: Tooru Fujisawa <arai_a@mac.com>
Date:   Wed,  1 Oct 2025 08:51:15 +0000

Bug 1991358 - Part 2: Remove ScriptLoadRequest::mScriptForCache. r=nbp

Differential Revision: https://phabricator.services.mozilla.com/D266619

Diffstat:
Mjs/loader/ModuleLoadRequest.cpp | 8++++++++
Mjs/loader/ModuleLoadRequest.h | 7++-----
Mjs/loader/ScriptLoadRequest.cpp | 20++------------------
Mjs/loader/ScriptLoadRequest.h | 11++---------
4 files changed, 14 insertions(+), 32 deletions(-)

diff --git a/js/loader/ModuleLoadRequest.cpp b/js/loader/ModuleLoadRequest.cpp @@ -61,6 +61,14 @@ ModuleLoadRequest::ModuleLoadRequest( MOZ_ASSERT(mLoader); } +ModuleLoadRequest::~ModuleLoadRequest() { + MOZ_ASSERT(!mReferrerScript); + MOZ_ASSERT(!mModuleRequestObj); + MOZ_ASSERT(mPayload.isUndefined()); + + DropJSObjects(this); +} + nsIGlobalObject* ModuleLoadRequest::GetGlobalObject() { return mLoader->GetGlobalObject(); } diff --git a/js/loader/ModuleLoadRequest.h b/js/loader/ModuleLoadRequest.h @@ -11,6 +11,7 @@ #include "ScriptLoadRequest.h" #include "ModuleLoaderBase.h" #include "mozilla/Assertions.h" +#include "mozilla/HoldDropJSObjects.h" #include "js/RootingAPI.h" #include "js/Value.h" #include "nsURIHashKey.h" @@ -27,11 +28,7 @@ class ModuleLoaderBase; // multiple imports of the same module. class ModuleLoadRequest final : public ScriptLoadRequest { - ~ModuleLoadRequest() { - MOZ_ASSERT(!mReferrerScript); - MOZ_ASSERT(!mModuleRequestObj); - MOZ_ASSERT(mPayload.isUndefined()); - } + ~ModuleLoadRequest(); ModuleLoadRequest(const ModuleLoadRequest& aOther) = delete; ModuleLoadRequest(ModuleLoadRequest&& aOther) = delete; diff --git a/js/loader/ScriptLoadRequest.cpp b/js/loader/ScriptLoadRequest.cpp @@ -11,7 +11,6 @@ #include "mozilla/dom/ScriptLoadContext.h" #include "mozilla/dom/WorkerLoadContext.h" #include "mozilla/dom/ScriptSettings.h" -#include "mozilla/HoldDropJSObjects.h" #include "mozilla/StaticPrefs_dom.h" #include "mozilla/Unused.h" #include "mozilla/Utf8.h" // mozilla::Utf8Unit @@ -70,20 +69,10 @@ NS_INTERFACE_MAP_END NS_IMPL_CYCLE_COLLECTING_ADDREF(ScriptLoadRequest) NS_IMPL_CYCLE_COLLECTING_RELEASE(ScriptLoadRequest) -NS_IMPL_CYCLE_COLLECTION_CLASS(ScriptLoadRequest) - -NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ScriptLoadRequest) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mFetchOptions, mOriginPrincipal, mBaseURL, - mLoadedScript, mLoadContext) - tmp->mScriptForCache = nullptr; -NS_IMPL_CYCLE_COLLECTION_UNLINK_END - -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(ScriptLoadRequest) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFetchOptions, mLoadContext, mLoadedScript) -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END +NS_IMPL_CYCLE_COLLECTION(ScriptLoadRequest, mFetchOptions, mOriginPrincipal, + mBaseURL, mLoadedScript, mLoadContext) NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(ScriptLoadRequest) - NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mScriptForCache) NS_IMPL_CYCLE_COLLECTION_TRACE_END ScriptLoadRequest::ScriptLoadRequest( @@ -108,8 +97,6 @@ ScriptLoadRequest::ScriptLoadRequest( } } -ScriptLoadRequest::~ScriptLoadRequest() { DropJSObjects(this); } - void ScriptLoadRequest::SetReady() { MOZ_ASSERT(!IsFinished()); mState = State::Ready; @@ -245,10 +232,7 @@ void ScriptLoadRequest::SetPendingFetchingError() { void ScriptLoadRequest::MarkScriptForCache(JSScript* aScript) { MOZ_ASSERT(!IsModuleRequest()); - MOZ_ASSERT(!mScriptForCache); MarkForCache(); - mScriptForCache = aScript; - HoldJSObjects(this); } static bool IsInternalURIScheme(nsIURI* uri) { diff --git a/js/loader/ScriptLoadRequest.h b/js/loader/ScriptLoadRequest.h @@ -87,7 +87,7 @@ class ScriptLoadRequest : public nsISupports, friend class ScriptLoadRequestList; protected: - virtual ~ScriptLoadRequest(); + virtual ~ScriptLoadRequest() {} public: using SRIMetadata = mozilla::dom::SRIMetadata; @@ -302,8 +302,7 @@ class ScriptLoadRequest : public nsISupports, // This fits the condition for the caching (e.g. file size, fetch count). PassedCondition, - // This is marked for encoding, with setting sufficient input, - // e.g. mScriptForCache for script. + // This is marked for encoding. MarkedForCache, }; CachingPlan mDiskCachingPlan = CachingPlan::Uninitialized; @@ -356,12 +355,6 @@ class ScriptLoadRequest : public nsISupports, // would share the same loaded script. RefPtr<LoadedScript> mLoadedScript; - // Holds the top-level JSScript that corresponds to the current source, once - // it is parsed, and marked to be saved in the bytecode cache. - // - // NOTE: This field is not used for ModuleLoadRequest. - JS::Heap<JSScript*> mScriptForCache; - // LoadContext for augmenting the load depending on the loading // context (DOM, Worker, etc.) RefPtr<LoadContextBase> mLoadContext;