Convert all JS_FRIEND_API to JS_PUBLIC_API. At this point, the JS_PUBLIC_API has
no formal curation process and in practice we add a lot of new features to
JS_FRIEND_API without giving much thought to if they should be public. The
result is that all embedders need to use the friend API in some form and the
distinction has lost meaning.
Going forward, we should continue to use the js/public/experimental directory as
a place to expose new APIs, and in general should strive for high quality of the
APIs that are exposed. If a particular API is tricky or discouraged, comments
explaining that will be more helpful that a losely applied FRIEND_API marker.
Differential Revision: https://phabricator.services.mozilla.com/D117607
BaseShape stores the JSClass* too so this patch changes the code to get the JSClass*
from there instead of from the ObjectGroup.
Differential Revision: https://phabricator.services.mozilla.com/D106975
BaseShape stores the JSClass* too so this patch changes the code to get the JSClass*
from there instead of from the ObjectGroup.
Differential Revision: https://phabricator.services.mozilla.com/D106975
This means all native object slots are JS::Values and removes a bunch of
dubious casting.
One wrinkle was that we now have to initialize both words of the value on
32-bit platforms; previously JIT code got away with leaving one word
uninitialized.
Differential Revision: https://phabricator.services.mozilla.com/D96436