This article covers features introduced in SpiderMonkey 17

Iterate over compartments and call the specified callback function on every compartment.


JS_IterateCompartments(JSRuntime *rt, void *data,
                       JSIterateCompartmentCallback compartmentCallback);
Name Type Description
cx JSRuntime * The runtime of the compartments to iterate over.
data void * This will be passed as the data parameter of the JSIterateCompartmentCallback.
compartmentCallback JSIterateCompartmentCallback Callback function (see below).

Callback function

typedef void
(*JSIterateCompartmentCallback)(JSRuntime *rt, void *data, JSCompartment *compartment);
Name Type Description
cx JSRuntime * The runtime of the compartments.
data void * data parameter passed to JS_IterateCompartments.
compartmentCallback JSCompartment * The pointer to the compartment.


JS_IterateCompartments calls compartmentCallback on every compartment. Beware that there is no guarantee that the compartment will survive after the callback returns. Also, barriers are disabled via the TraceSession.

See also