See if it's possible to replace context destroy notifications
GjsMaybeOwned (in jsapi-util-root.h) takes a lot of space to store a callback pointer and data pointer which are used when the GjsContext is destroyed. These pointers are either all null (for the GjsMaybeOwned instances used in object.cpp) or some null, some the same (for the instances used in closure.cpp.) It should be possible to eliminate these fields while still calling the same callback on closures stored in a GjsMaybeOwned where necessary.
In order to do this, it might just be necessary to stop using GjsMaybeOwned for both objects and closures, and instead use a more specialized struct for each one.