This article covers features introduced in SpiderMonkey 17
Add/remove callback function for finalization.
Syntax
bool JS_AddFinalizeCallback(JSRuntime *rt, JSFinalizeCallback cb, void *data); // Added in SpiderMonkey 38 (JSAPI 32) void JS_RemoveFinalizeCallback(JSRuntime *rt, JSFinalizeCallback cb); // Added in SpiderMonkey 38 (JSAPI 32) void JS_SetFinalizeCallback(JSRuntime *rt, JSFinalizeCallback cb); // Obsolete since JSAPI 32
| Name | Type | Description | 
|---|---|---|
| rt | JSRuntime * | The JSRuntimefor which to set the finalization callback. | 
| cb | JSFinalizeCallback | Pointer to the new callback function to use. | 
| data | void * | Passed to dataparameter forJSFinalizeCallback. | 
Callback syntax
typedef enum JSFinalizeStatus {
    JSFINALIZE_GROUP_START,
    JSFINALIZE_GROUP_END,
    JSFINALIZE_COLLECTION_END
} JSFinalizeStatus;
typedef void
(* JSFinalizeCallback)(JSFreeOp *fop, JSFinalizeStatus status, bool isCompartment, void *data);
| Name | Type | Description | 
|---|---|---|
| fop | JSFreeOp * | A pointer to an instance of JSFreeOp. | 
| status | JSFinalizeStatus | One of the JSFinalizeStatusconstants, described below, indicating the stage of finalize. | 
| isCompartment | bool | falseif all compartments are being collected,trueif a compartment is being collected. | 
| data | void * | dataparameter specified inJS_AddFinalizeCallback. Added in SpiderMonkey 38 | 
| Name | Description | 
|---|---|
| JSFINALIZE_GROUP_START | Called when preparing to sweep a group of compartments, before anything has been swept. The collector will not yield to the mutator before calling the callback with JSFINALIZE_GROUP_ENDstatus. | 
| JSFINALIZE_GROUP_END | Called when preparing to sweep a group of compartments. Weak references to unmarked things have been removed and things that are not swept incrementally have been finalized at this point. The collector may yield to the mutator after this point. | 
| JSFINALIZE_COLLECTION_END | Called at the end of collection when everything has been swept. | 
Description
JS_AddFinalizeCallback add a callback function which the garbage collector calls at several points during garbage collection. rt is the runtime in which you specify the callback. cb is a pointer to the callback function to add.
JS_RemoveFinalizeCallback removes the previously added callback function.
Obsolete since JSAPI 32
JS_SetFinalizeCallback sets a new callback function. It was replaced with JS_AddFinalizeCallback, to allow adding multiple callback functions.
See Also
- MXR ID Search for JS_AddFinalizeCallback
- MXR ID Search for JS_RemoveFinalizeCallback
- MXR ID Search for JSFinalizeStatus
- MXR ID Search for JSFINALIZE_GROUP_START
- MXR ID Search for JSFINALIZE_GROUP_END
- MXR ID Search for JSFINALIZE_COLLECTION_END
- MXR ID Search for JSFinalizeCallback
- JSFreeOp
- JS_SetGCCallback
- bug 723286 - separated from JS_SetGCCallbackasJS_SetFinalizeCallback
- bug 996785 - replaced with JS_AddFinalizeCallback