Commit Graph
117 Commits
Author SHA1 Message Date
Tooru Fujisawa fb06302042 Bug 1907011 - Part 7: Update the most of the remaining usage of "bytecode" and update document. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D273960
2025-11-26 04:13:26 +00:00
Tooru Fujisawa 1b4989c103 Bug 1907011 - Part 6: Rename LoadedScript::mBytecodeOffset to LoadedScript::mSerializedStencilOffset. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D273959
2025-11-26 04:13:23 +00:00
Tooru Fujisawa 96dcf3b3c5 Bug 1907011 - Part 5: Rename LoadedScript::mSRIAndBytecode to LoadedScript::mSRIAndSerializedStencil. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D273958
2025-11-26 04:13:20 +00:00
Tooru Fujisawa ae2826ed85 Bug 1998925 - Part 1: Add dirty flag to LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D271875
2025-11-19 03:47:14 +00:00
Tooru Fujisawa 3cab1a6f1a Bug 1991607 - Part 11: Remove ScriptLoadRequest::mBaseURL. r=bthrall,dom-worker-reviewers,edenchuang
In contrast to other fields, mBaseURL is not populated in the constructors.
Thus we just need to remove the ScriptLoadRequest::mBaseURL field and
use the LoadedScript::mBaseURL instead.

Differential Revision: https://phabricator.services.mozilla.com/D267360
2025-10-22 11:21:01 +00:00
Tooru Fujisawa cde6c638b3 Bug 1991607 - Part 10: Remove ScriptLoadRequest::mURI. r=bthrall,dom-worker-reviewers,edenchuang
Differential Revision: https://phabricator.services.mozilla.com/D267359
2025-10-22 11:20:59 +00:00
Tooru Fujisawa c15f0967dd Bug 1991607 - Part 4: Add ImportMapScript subclass for LoadedScript. r=bthrall
ScriptLoadRequest::mKind == eImportMap case has been using
LoadedScript::mKind == eClassic.
This patch solves this inconsistency by introducing another subclass.

Differential Revision: https://phabricator.services.mozilla.com/D267353
2025-10-22 11:20:43 +00:00
Atila Butkovits 13ff5f1bad Revert "Bug 1991607 - Part 12: Reorder ScriptLoadRequest/ModuleLoadRequest fields. r=bthrall" for causing bustages at LoadedScript.cpp.
This reverts commit 30499d5cdc.

Revert "Bug 1991607 - Part 11: Remove ScriptLoadRequest::mBaseURL. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit 85324622ab.

Revert "Bug 1991607 - Part 10: Remove ScriptLoadRequest::mURI. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit 3b1afd5ca0.

Revert "Bug 1991607 - Part 9: Pass URI to LoadedScript ctor from ScriptLoadRequest ctor callsites. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit 10dc4e2bc0.

Revert "Bug 1991607 - Part 8: Remove ScriptLoadRequest::mFetchOptions. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit b4c09eb6e1.

Revert "Bug 1991607 - Part 7: Pass FetchOptions to LoadedScript ctor from ScriptLoadRequest ctor callsites. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit f48d2160e1.

Revert "Bug 1991607 - Part 6: Remove ScriptLoadRequest::mReferrerPolicy. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit a6901c3f1d.

Revert "Bug 1991607 - Part 5: Pass ReferrerPolicy to LoadedScript ctor from ScriptLoadRequest ctor callsites. r=bthrall,dom-worker-reviewers,edenchuang"

This reverts commit c2b5cb885a.

Revert "Bug 1991607 - Part 4: Add ImportMapScript subclass for LoadedScript. r=bthrall"

This reverts commit 09b8ae44b8.

Revert "Bug 1991607 - Part 3: Make LoadedScript::mKind field const. r=bthrall"

This reverts commit 3eebccc479.

Revert "Bug 1991607 - Part 2: Let ScriptLoader::CheckContentPolicy receive LoadedScript-related parameters separately. r=bthrall"

This reverts commit dd8530cb71.

Revert "Bug 1991607 - Part 1: Let ScriptHashKey and ScriptLoadData receive LoadedScript-related parameters separately. r=bthrall"

This reverts commit b4a4f94096.
2025-10-22 05:40:38 +00:00
Tooru Fujisawa 85324622ab Bug 1991607 - Part 11: Remove ScriptLoadRequest::mBaseURL. r=bthrall,dom-worker-reviewers,edenchuang
In contrast to other fields, mBaseURL is not populated in the constructors.
Thus we just need to remove the ScriptLoadRequest::mBaseURL field and
use the LoadedScript::mBaseURL instead.

Differential Revision: https://phabricator.services.mozilla.com/D267360
2025-10-22 04:38:20 +00:00
Tooru Fujisawa 3b1afd5ca0 Bug 1991607 - Part 10: Remove ScriptLoadRequest::mURI. r=bthrall,dom-worker-reviewers,edenchuang
Differential Revision: https://phabricator.services.mozilla.com/D267359
2025-10-22 04:38:17 +00:00
Tooru Fujisawa 09b8ae44b8 Bug 1991607 - Part 4: Add ImportMapScript subclass for LoadedScript. r=bthrall
ScriptLoadRequest::mKind == eImportMap case has been using
LoadedScript::mKind == eClassic.
This patch solves this inconsistency by introducing another subclass.

Differential Revision: https://phabricator.services.mozilla.com/D267353
2025-10-22 04:38:00 +00:00
Tooru Fujisawa 14761bfc83 Bug 1991081 - Part 5: Use single field for SRI and optional bytecode, for bytecode case and for cached stencil case. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266615
2025-10-16 09:05:47 +00:00
Tooru Fujisawa 2aa5d00aaf Bug 1991081 - Part 3: Store nsICacheInfoChannel to LoadedScript also in text and bytecode variants. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266613
2025-10-16 09:05:41 +00:00
Tooru Fujisawa 1257f9e671 Bug 1991081 - Part 1: Rename Stencil variant to CachedStencil in LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266610
2025-10-16 09:05:36 +00:00
agoloman 3352c88229 Revert "Bug 1991081 - Part 7: Rewrite EncodeBytecodeAndSave with LoadedScript. r=nbp" for causing failures @LoadedScript.h.
This reverts commit b10b7c8add.

Revert "Bug 1991081 - Part 6: Remove testing-only events from EncodeBytecodeAndSave. r=nbp"

This reverts commit caf275708e.

Revert "Bug 1991081 - Part 5: Use single field for SRI and optional bytecode, for bytecode case and for cached stencil case. r=nbp"

This reverts commit 86631a6e10.

Revert "Bug 1991081 - Part 4: Use LoadedScript for logging in EncodeBytecodeAndSave. r=nbp"

This reverts commit 0f9d7f11e8.

Revert "Bug 1991081 - Part 3: Store nsICacheInfoChannel to LoadedScript also in text and bytecode variants. r=nbp"

This reverts commit 370f5bcd48.

Revert "Bug 1991081 - Part 2: Store stencil to LoadedScript also in text and bytecode variants. r=nbp"

This reverts commit 7eaf4f425f.

Revert "Bug 1991081 - Part 1: Rename Stencil variant to CachedStencil in LoadedScript. r=nbp"

This reverts commit a7a6ce8f6f.
2025-10-15 13:30:07 +00:00
Tooru Fujisawa 86631a6e10 Bug 1991081 - Part 5: Use single field for SRI and optional bytecode, for bytecode case and for cached stencil case. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266615
2025-10-15 09:44:15 +00:00
Tooru Fujisawa 370f5bcd48 Bug 1991081 - Part 3: Store nsICacheInfoChannel to LoadedScript also in text and bytecode variants. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266613
2025-10-15 09:44:09 +00:00
Tooru Fujisawa a7a6ce8f6f Bug 1991081 - Part 1: Rename Stencil variant to CachedStencil in LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266610
2025-10-15 09:44:04 +00:00
Serban Stanca 713fa52191 Revert "Bug 1991370, Bug 1991380, Bug 1991358, Bug 1991081 - Part 4: Use FrontendContext-based EncodeStencil in ScriptPreloader. r=bthrall" for causing multiple bugs.
This reverts commit b1f784aebb.

This reverts commit 7f4d0b5564.

This reverts commit 7292c33902.

This reverts commit cbe156f214.

This reverts commit 3412fc5535.

This reverts commit 1b08161b6d.

This reverts commit d0cf6f5210.

This reverts commit da56ddfb2f.

This reverts commit 926bbd302a.

This reverts commit 8c38c4c093.

This reverts commit d6475781cd.

This reverts commit 8044e8dae9.

This reverts commit a3149ca9dd.

This reverts commit eca472223f.

This reverts commit 6bc2703f1a.
2025-10-08 12:57:20 +00:00
Tooru Fujisawa d6475781cd Bug 1991081 - Part 5: Use single field for SRI and optional bytecode, for bytecode case and for cached stencil case. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266615
2025-09-30 11:39:22 +00:00
Tooru Fujisawa a3149ca9dd Bug 1991081 - Part 3: Store nsICacheInfoChannel to LoadedScript also in text and bytecode variants. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266613
2025-09-30 11:39:14 +00:00
Tooru Fujisawa 6bc2703f1a Bug 1991081 - Part 1: Rename Stencil variant to CachedStencil in LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D266610
2025-09-30 11:39:07 +00:00
Tooru Fujisawa 924a35fac5 Bug 1980156 - Cache nsICacheInfoChannel and use it for saving bytecode in navigation cache. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D265616
2025-09-25 11:00:12 +00:00
Tooru Fujisawa ab927f3e80 Bug 1986908 - Reorder JS::loader::LoadedScript fields to pack more. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D263749
2025-09-09 06:31:11 +00:00
Jon Coppeard 5f0809ace8 Bug 1982328 - Part 11: Remove use of unnecessary JS namespace prefix in the module loader r=allstarschh
We're already in the JS namespace here so this is not necessary.

Differential Revision: https://phabricator.services.mozilla.com/D260674
2025-08-13 14:17:06 +00:00
Yoshi Cheng-Hao Huang 5aaa5b3e47 Bug 1971701 - Remove JS::ExposeScriptToDebugger. r=arai
The script will be exposed to the debugger during stencil instantiation.
https://searchfox.org/mozilla-central/rev/61f64da2b20e50610d532675877ca4b5b9d6f1e4/js/src/frontend/BytecodeCompiler.cpp#498

Hence removing the extra call to expose the script.

Differential Revision: https://phabricator.services.mozilla.com/D253467
2025-07-09 12:50:08 +00:00
Sandor Molnar 3fd83b1709 Revert "Bug 1971701 - Remove JS::ExposeScriptToDebugger. r=arai" for causing regression.
This reverts commit 82b31dee46.
2025-07-03 17:23:02 +00:00
Yoshi Cheng-Hao Huang 82b31dee46 Bug 1971701 - Remove JS::ExposeScriptToDebugger. r=arai
The script will be exposed to the debugger during stencil instantiation.
https://searchfox.org/mozilla-central/rev/61f64da2b20e50610d532675877ca4b5b9d6f1e4/js/src/frontend/BytecodeCompiler.cpp#498

Hence removing the extra call to expose the script.

Differential Revision: https://phabricator.services.mozilla.com/D253467
2025-06-12 21:31:46 +00:00
Tooru Fujisawa 303abbb5c4 Bug 1954644 - Part 1: Make the cycle collection macro use consistent. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D242306
2025-03-22 04:03:54 +00:00
Tooru Fujisawa 5c69e6024e Bug 1899316 - Add ModuleScript::{FromCache,ToCache}. r=nbp
In order to store ModuleScript in SharedScriptCache, we need to strip off
all GC-things and runtime-related flags.
All fields in ModuleScript matches either of them, so just converting to
base class LoadedScript fits this purpose.

Differential Revision: https://phabricator.services.mozilla.com/D242305
2025-03-22 04:03:54 +00:00
Jon Coppeard a8cd5ddb9e Bug 1927125 - Avoid triggering gray unmarking when unlinking module scripts r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D226902
2024-10-28 17:34:58 +00:00
Jonatan Klemets 7c061d08e8 Bug 1877792 - Part 13: Skip setting/clearing the module private for synthetic modules r=spidermonkey-reviewers,jonco
Synthetic modules do not have a module private.

Differential Revision: https://phabricator.services.mozilla.com/D218560
2024-09-03 08:10:52 +00:00
Cristina Horotan a842adb0d9 Backed out 20 changesets (bug 1877792) for causing wpt failures at importscripts_mime_local.any.sharedworker.html CLOSED TREE
Backed out changeset 19d78d0b6ee4 (bug 1877792)
Backed out changeset 14f104e5ce51 (bug 1877792)
Backed out changeset 662eb52b2a6f (bug 1877792)
Backed out changeset 48dc4035a14f (bug 1877792)
Backed out changeset d98ecddf2f59 (bug 1877792)
Backed out changeset 1234a31ff88f (bug 1877792)
Backed out changeset a3b5b0cde6ce (bug 1877792)
Backed out changeset a1f494b9592a (bug 1877792)
Backed out changeset a4d7565218f3 (bug 1877792)
Backed out changeset fe179004423b (bug 1877792)
Backed out changeset 39a20aee3942 (bug 1877792)
Backed out changeset 95b20763e650 (bug 1877792)
Backed out changeset d763241fccaf (bug 1877792)
Backed out changeset 0674cf646120 (bug 1877792)
Backed out changeset bd23c96418b6 (bug 1877792)
Backed out changeset 5b1e29e4c597 (bug 1877792)
Backed out changeset 3cead4149e6b (bug 1877792)
Backed out changeset d73a9f57f03c (bug 1877792)
Backed out changeset 82a58a80f58a (bug 1877792)
Backed out changeset 4c7182604e4f (bug 1877792)
2024-08-22 19:23:15 +03:00
Jonatan Klemets a69b75d81d Bug 1877792 - Part 13: Skip setting/clearing the module private for synthetic modules r=spidermonkey-reviewers,jonco
Synthetic modules do not have a module private.

Differential Revision: https://phabricator.services.mozilla.com/D218560
2024-08-22 14:21:53 +00:00
Tooru Fujisawa 292134a92b Bug 1896709 - Part 8: Add Stencil variant to LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D215877
2024-07-18 21:58:12 +00:00
Norisz Fay 471367226c Backed out 17 changesets (bug 1896709) for causing build bustage and mochitest failures CLOSED TREE
Backed out changeset 046f0f522ce7 (bug 1896709)
Backed out changeset 0271e50308e6 (bug 1896709)
Backed out changeset 26fac760de19 (bug 1896709)
Backed out changeset 6fa3424dfc40 (bug 1896709)
Backed out changeset b7bcb9904435 (bug 1896709)
Backed out changeset c6878c5fdde4 (bug 1896709)
Backed out changeset 8ca8a4082e44 (bug 1896709)
Backed out changeset 20ff83806cc6 (bug 1896709)
Backed out changeset 6c9338852a19 (bug 1896709)
Backed out changeset e8615b5d82ab (bug 1896709)
Backed out changeset 842f2047a4bd (bug 1896709)
Backed out changeset 54eea04a7342 (bug 1896709)
Backed out changeset 220b544127cb (bug 1896709)
Backed out changeset 52ce0ebfb29a (bug 1896709)
Backed out changeset 34fc79dc1ad7 (bug 1896709)
Backed out changeset 50b0f6a23e3c (bug 1896709)
Backed out changeset 89c4c6bb465a (bug 1896709)
2024-07-18 14:48:46 +03:00
Tooru Fujisawa bbff5d2fa7 Bug 1896709 - Part 8: Add Stencil variant to LoadedScript. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D215877
2024-07-18 09:15:26 +00:00
Tooru Fujisawa c65d297f07 Bug 1899172 - Part 2: Add ScriptLoadContext::GetInlineScriptText. r=nbp
Differential Revision: https://phabricator.services.mozilla.com/D211902
2024-05-30 05:01:15 +00:00
Jon Coppeard 12d9fbf2d4 Bug 1877703 - Part 1: Remove speculatively preloaded modules from the module map when import map is registered r=smaug,allstarschh
The initial problem reported in the bug is that we try to speculatively load a
bareword import before the import map is dynamically inserted that makes that
load valid. The load fails and then we cache the failure in the module map.

The more general problem is that import maps change the locations that imports
are resolved to so if when there is a dynamically inserted import map
speculative preload may load and cache the wrong things.

This patch fixes this problem by removing any preloaded modules from the module
map when an import map is registered.

Previously we used to do something like this but it was changed because I
wasn't confident that it wouldn't remove too much. However it appears that this
is necessary to handle this situation, so it's implemented here but with more
checks that it only removes preloaded modules. This is handled by adding extra
flags where necessary so we have the information on hand to check.

I've made these diagnostic asserts so that this actually gets check in real use.

Differential Revision: https://phabricator.services.mozilla.com/D202611
2024-03-19 10:07:34 +00:00
Otto Länd 27af310f17 Bug 1800896, 1882789, 1882793: apply code formatting via Lando
# ignore-this-changeset
2024-03-18 18:06:34 +00:00
Nicolas B. Pierron 793620ada4 Bug 1882789 - Register the LoadedScript in the memory reporter. r=arai
This change adds the `LoadedScript` in the memory reporter.

This change is needed as we are looking into using the `LoadedScript` as a value
of the `SharedSubResourceCache`. The upcoming cache requires the Value to be
registered in the memory reporter, providing a `SizeOfInlcudingThis` function.

Differential Revision: https://phabricator.services.mozilla.com/D203132
2024-03-18 14:26:57 +00:00
Norisz Fay d4dacb8c6c Backed out 4 changesets (bug 1877703) as requested by dev for causing Bug 1885443
Backed out changeset 5eb60e36ef79 (bug 1877703)
Backed out changeset 5921d1fb831e (bug 1877703)
Backed out changeset 64281b11237e (bug 1877703)
Backed out changeset 7ee0827809fb (bug 1877703)
2024-03-15 13:28:07 +02:00
Jon Coppeard cb76d1f909 Bug 1877703 - Part 1: Remove speculatively preloaded modules from the module map when import map is registered r=smaug,allstarschh
The initial problem reported in the bug is that we try to speculatively load a
bareword import before the import map is dynamically inserted that makes that
load valid. The load fails and then we cache the failure in the module map.

The more general problem is that import maps change the locations that imports
are resolved to so if when there is a dynamically inserted import map
speculative preload may load and cache the wrong things.

This patch fixes this problem by removing any preloaded modules from the module
map when an import map is registered.

Previously we used to do something like this but it was changed because I
wasn't confident that it wouldn't remove too much. However it appears that this
is necessary to handle this situation, so it's implemented here but with more
checks that it only removes preloaded modules. This is handled by adding extra
flags where necessary so we have the information on hand to check.

I've made these diagnostic asserts so that this actually gets check in real use.

Differential Revision: https://phabricator.services.mozilla.com/D202611
2024-03-13 13:25:29 +00:00
Norisz Fay 88f0544e64 Backed out 4 changesets (bug 1877703) for causing ScriptLoader related wpt failures
Backed out changeset 6b99c1c567b4 (bug 1877703)
Backed out changeset bc9c70289244 (bug 1877703)
Backed out changeset 1e17b87ab7f8 (bug 1877703)
Backed out changeset 591b5483bcd8 (bug 1877703)
2024-03-12 23:43:16 +02:00
Jon Coppeard 0a6e28c113 Bug 1877703 - Part 1: Remove speculatively preloaded modules from the module map when import map is registered r=smaug,allstarschh
The initial problem reported in the bug is that we try to speculatively load a
bareword import before the import map is dynamically inserted that makes that
load valid. The load fails and then we cache the failure in the module map.

The more general problem is that import maps change the locations that imports
are resolved to so if when there is a dynamically inserted import map
speculative preload may load and cache the wrong things.

This patch fixes this problem by removing any preloaded modules from the module
map when an import map is registered.

Previously we used to do something like this but it was changed because I
wasn't confident that it wouldn't remove too much. However it appears that this
is necessary to handle this situation, so it's implemented here but with more
checks that it only removes preloaded modules. This is handled by adding extra
flags where necessary so we have the information on hand to check.

I've made these diagnostic asserts so that this actually gets check in real use.

Differential Revision: https://phabricator.services.mozilla.com/D202611
2024-03-12 16:43:48 +00:00
Nicolas B. Pierron 8de7851246 Bug 1800641 - Part 12: Move some ScriptLoadRequest fields into LoadedScript. r=nbp
We are looking into caching loaded script in memory. To do so we need something
to cache.

At the moment, the `ScriptLoadRequest` structure hold all the fields which are
loaded, and used before executing JavaScript code. Then, the `ScriptLoadRequest`
is not guaranteed to out-live the first execution.

Therefore, we have to move fields out of the `ScriptLoadRequest` such that they
can later be used by any caching mechanism. The `LoadedScript` is the closest
existing structure which exists which fit the description.

This patch moves fields out of the ScriptLoadRequest into the `LoadedScript`,
which already has a `LoadedScript` field.

The `LoadedScript` field is initialized sooner, when the `ScriptLoadRequest` is
created, to be subsituted later by a real cache implementation. At the moment
the function `ScriptLoadRequest::NoCacheEntryFound` is used as a placeholder to
change the state of the `ScriptLoadRequest` from `CheckingCache` to `Fetching`.
Existing initializations are replaced by assertions to fail in debug build if
the current patch does not reproduce the expected state properly.

The `LoadedScript` get fields such as the source text, the text length, the
bytecode buffer (which also contains SRI), and the offset at which the bytecode
starts within the bytecode buffer. As these fields are no longer reachable by
name, multiple accessors are added to work-around the issue. Using this as an
opportunity to add extra assertions as part of these accessors.

A new class named `LoadedScriptDelegate` is added to re-add, by inheritance, all
the accessors which used to be part of `ScriptLoadRequest` as methods which are
delegating to the field which is holding the `LoadedScript`. This class is using
templates to avoid virtual inheritance which might hinder inlining, especially
since `ScriptLoadRequest` cannot be made final, as `ModuleLoadRequest` extends
it.

The `ScriptFetchOptions` structure is moved to its own file to solve C++ include
issues.

Differential Revision: https://phabricator.services.mozilla.com/D197921
2024-01-08 14:57:40 +00:00
Tooru Fujisawa c389c518db Bug 1800641 - Part 9: Add LoadedScript::mURI and call SetBaseURL separately. r=nbp
Depends on D197846

Differential Revision: https://phabricator.services.mozilla.com/D197847
2024-01-08 14:57:39 +00:00
Noemi Erli 46e817bca8 Backed out changeset 4d6294424819 (bug 1800641) for causing Bug 1872347 2023-12-29 16:23:18 +02:00
Nicolas B. Pierron 7ad7f045d4 Bug 1800641 - Move some ScriptLoadRequest fields into LoadedScript. r=yulia
We are looking into caching loaded script in memory. To do so we need something
to cache.

At the moment, the `ScriptLoadRequest` structure hold all the fields which are
loaded, and used before executing JavaScript code. Then, the `ScriptLoadRequest`
is not guaranteed to out-live the first execution.

Therefore, we have to move fields out of the `ScriptLoadRequest` such that they
can later be used by any caching mechanism. The `LoadedScript` is the closest
existing structure which exists which fit the description.

This patch moves fields out of the ScriptLoadRequest into the `LoadedScript`,
which already has a `LoadedScript` field.

The `LoadedScript` field is initialized sooner, when the `ScriptLoadRequest` is
created, to be subsituted later by a real cache implementation. At the moment
the function `ScriptLoadRequest::NoCacheEntryFound` is used as a placeholder to
change the state of the `ScriptLoadRequest` from `CheckingCache` to `Fetching`.
Existing initializations are replaced by assertions to fail in debug build if
the current patch does not reproduce the expected state properly.

The `LoadedScript` get fields such as the source text, the text length, the
bytecode buffer (which also contains SRI), and the offset at which the bytecode
starts within the bytecode buffer. As these fields are no longer reachable by
name, multiple accessors are added to work-around the issue. Using this as an
opportunity to add extra assertions as part of these accessors.

A new class named `LoadedScriptDelegate` is added to re-add, by inheritance, all
the accessors which used to be part of `ScriptLoadRequest` as methods which are
delegating to the field which is holding the `LoadedScript`. This class is using
templates to avoid virtual inheritance which might hinder inlining, especially
since `ScriptLoadRequest` cannot be made final, as `ModuleLoadRequest` extends
it.

The `ScriptFetchOptions` structure is moved to its own file to solve C++ include
issues.

Differential Revision: https://phabricator.services.mozilla.com/D163615
2023-12-25 09:46:54 +00:00
Cosmin Sabou 78d82c8098 Backed out changeset f69f493b2f3c (bug 1800641) for causing non-unified build bustages on LoadedScript.cpp. CLOSED TREE 2023-12-25 08:38:51 +02:00