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:
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;