ported from UXP: Issue #1691 - Part 1: Provide a way of associating a private value with a script or module. (1a6b3a82)

This commit is contained in:
2023-04-30 22:15:30 +08:00
parent 32f0703cfb
commit 1022a63417
10 changed files with 130 additions and 44 deletions
+3 -3
View File
@@ -59,9 +59,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;
}
}
@@ -84,7 +84,7 @@ ModuleScript::SetModuleRecord(JS::Handle<JSObject*> 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);
}