From 15914ec5780e7867ab508a48a83311c56950f8a9 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Fri, 27 Nov 2020 15:47:49 +0000 Subject: Issue #1691 - Part 1: Provide a way of associating a private value with a script or module. This is a prerequisite for dynamic import --- dom/script/ModuleScript.cpp | 6 +++--- dom/script/ScriptLoader.cpp | 8 ++++---- dom/script/ScriptLoader.h | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'dom') diff --git a/dom/script/ModuleScript.cpp b/dom/script/ModuleScript.cpp index 9f7fe9ab9..b2a72e628 100644 --- a/dom/script/ModuleScript.cpp +++ b/dom/script/ModuleScript.cpp @@ -58,9 +58,9 @@ ModuleScript::UnlinkModuleRecord() { // Remove module's back reference to this object request if present. if (mModuleRecord) { - MOZ_ASSERT(JS::GetModuleHostDefinedField(mModuleRecord).toPrivate() == + MOZ_ASSERT(JS::GetModulePrivate(mModuleRecord).toPrivate() == this); - JS::SetModuleHostDefinedField(mModuleRecord, JS::UndefinedValue()); + JS::SetModulePrivate(mModuleRecord, JS::UndefinedValue()); mModuleRecord = nullptr; } } @@ -83,7 +83,7 @@ ModuleScript::SetModuleRecord(JS::Handle aModuleRecord) // Make module's host defined field point to this module script object. // This is cleared in the UnlinkModuleRecord(). - JS::SetModuleHostDefinedField(mModuleRecord, JS::PrivateValue(this)); + JS::SetModulePrivate(mModuleRecord, JS::PrivateValue(this)); HoldJSObjects(this); } diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index 5b7bea8d2..8058c8caa 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -798,13 +798,13 @@ ScriptLoader::StartFetchingModuleAndDependencies(ModuleLoadRequest* aParent, // 8.1.3.8.1 HostResolveImportedModule(referencingModule, specifier) JSObject* -HostResolveImportedModule(JSContext* aCx, JS::Handle aModule, +HostResolveImportedModule(JSContext* aCx, + JS::Handle aReferencingPrivate, JS::Handle aSpecifier) { // Let referencing module script be referencingModule.[[HostDefined]]. - JS::Value value = JS::GetModuleHostDefinedField(aModule); - auto script = static_cast(value.toPrivate()); - MOZ_ASSERT(script->ModuleRecord() == aModule); + auto script = static_cast(aReferencingPrivate.toPrivate()); + MOZ_ASSERT(JS::GetModulePrivate(script->ModuleRecord()) == aReferencingPrivate); // Let url be the result of resolving a module specifier given referencing // module script and specifier. diff --git a/dom/script/ScriptLoader.h b/dom/script/ScriptLoader.h index ec9524f14..8cbcf7b96 100644 --- a/dom/script/ScriptLoader.h +++ b/dom/script/ScriptLoader.h @@ -630,8 +630,9 @@ private: ModuleScript* GetFetchedModule(nsIURI* aURL) const; friend JSObject* - HostResolveImportedModule(JSContext* aCx, JS::Handle aModule, - JS::Handle aSpecifier); + HostResolveImportedModule(JSContext* aCx, + JS::Handle aReferencingPrivate, + JS::Handle aSpecifier); nsresult CreateModuleScript(ModuleLoadRequest* aRequest); nsresult ProcessFetchedModuleSource(ModuleLoadRequest* aRequest); -- cgit v1.2.3