commit 26107c4f63741a94b958b19cb54be1c5c01c075e
parent dab845c9edf7165672bd6dbb8e8a28763ab379f9
Author: Daniel Minor <dminor@mozilla.com>
Date: Fri, 12 Dec 2025 14:12:36 +0000
Bug 1994828 - Don't cache wasm modules; r=arai
Differential Revision: https://phabricator.services.mozilla.com/D275506
Diffstat:
1 file changed, 32 insertions(+), 9 deletions(-)
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
@@ -2775,15 +2775,33 @@ void ScriptLoader::CalculateCacheFlag(ScriptLoadRequest* aRequest) {
return;
}
- if (aRequest->IsModuleRequest() &&
- aRequest->AsModuleRequest()->mModuleType != JS::ModuleType::JavaScript) {
- LOG(("ScriptLoadRequest (%p): Bytecode-cache: Skip all: JSON module",
- aRequest));
- aRequest->MarkNotCacheable();
- MOZ_ASSERT(!aRequest->getLoadedScript()->HasDiskCacheReference());
- MOZ_ASSERT_IF(aRequest->IsTextSource(),
- aRequest->HasNoSRIOrSRIAndSerializedStencil());
- return;
+ if (aRequest->IsModuleRequest()) {
+ ModuleLoadRequest* moduleLoadRequest = aRequest->AsModuleRequest();
+ if (moduleLoadRequest->mModuleType == JS::ModuleType::JavaScriptOrWasm) {
+#ifdef NIGHTLY_BUILD
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=1998240
+ // For now, we don't support caching wasm modules.
+ if (moduleLoadRequest->HasWasmMimeTypeEssence()) {
+ LOG(("ScriptLoadRequest (%p): Bytecode-cache: Skip all: wasm module",
+ aRequest));
+ aRequest->MarkNotCacheable();
+ // The disk reference is cleared when we do the mime essense check
+ // in PrepareLoadedRequest.
+ MOZ_ASSERT(!aRequest->getLoadedScript()->HasDiskCacheReference());
+ MOZ_ASSERT_IF(aRequest->IsTextSource(),
+ aRequest->HasNoSRIOrSRIAndSerializedStencil());
+ return;
+ }
+#endif
+ } else {
+ LOG(("ScriptLoadRequest (%p): Bytecode-cache: Skip all: synthetic module",
+ aRequest));
+ aRequest->MarkNotCacheable();
+ MOZ_ASSERT(!aRequest->getLoadedScript()->HasDiskCacheReference());
+ MOZ_ASSERT_IF(aRequest->IsTextSource(),
+ aRequest->HasNoSRIOrSRIAndSerializedStencil());
+ return;
+ }
}
if (!aRequest->IsCachedStencil() && aRequest->ExpirationTime().IsExpired()) {
@@ -4630,6 +4648,11 @@ nsresult ScriptLoader::PrepareLoadedRequest(ScriptLoadRequest* aRequest,
if (nsContentUtils::HasWasmMimeTypeEssence(
NS_ConvertUTF8toUTF16(mimeType))) {
aRequest->AsModuleRequest()->SetHasWasmMimeTypeEssence();
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=1998240
+ // For now, we don't support caching wasm modules. We enable
+ // caching in ScriptLoader::OnStreamComplete for
+ // text streams prior to reaching the mime type check.
+ aRequest->getLoadedScript()->DropDiskCacheReferenceAndSRI();
}
}
}