Issue #1691 - Part 6a: Support private values which contain pointers to cycle-collected C++ objects https://bugzilla.mozilla.org/show_bug.cgi?id=1342012

(cherry picked from commit 1286cca73d58332ba0becd0011f747713b8acfac)
This commit is contained in:
Brian Smith 2023-04-09 12:22:33 -05:00 committed by roytam1
commit 1b811bd711
10 changed files with 107 additions and 23 deletions

View file

@ -4756,7 +4756,7 @@ JS::SetModulePrivate(JSObject* module, const JS::Value& value)
JS_PUBLIC_API(JS::Value)
JS::GetModulePrivate(JSObject* module)
{
return module->as<ModuleObject>().scriptSourceObject()->getPrivate();
return module->as<ModuleObject>().scriptSourceObject()->canonicalPrivate();
}
JS_PUBLIC_API(void)
@ -4768,7 +4768,21 @@ JS::SetScriptPrivate(JSScript* script, const JS::Value& value)
JS_PUBLIC_API(JS::Value)
JS::GetScriptPrivate(JSScript* script)
{
return script->scriptSourceUnwrap().getPrivate();
return script->scriptSourceUnwrap().canonicalPrivate();
}
JS_PUBLIC_API(JS::ScriptPrivateFinalizeHook)
JS::GetScriptPrivateFinalizeHook(JSContext* cx)
{
AssertHeapIsIdle(cx);
return cx->runtime()->scriptPrivateFinalizeHook;
}
JS_PUBLIC_API(void)
JS::SetScriptPrivateFinalizeHook(JSContext* cx, JS::ScriptPrivateFinalizeHook func)
{
AssertHeapIsIdle(cx);
cx->runtime()->scriptPrivateFinalizeHook = func;
}
JS_PUBLIC_API(bool)