This article covers features introduced in SpiderMonkey 31
Specify a new callback function for Out of Memory error.
Syntax
void JS::SetOutOfMemoryCallback(JSRuntime *rt, JS::OutOfMemoryCallback cb, void *data);
| Name | Type | Description | 
|---|---|---|
| rt | JSRuntime * | The JSRuntimefor which to set the GC callback. | 
| cb | JS::OutOfMemoryCallback | Pointer to the new callback function to use. | 
| data | void * | dataparameter which will be passed toJS::OutOfMemoryCallback. Added in SpiderMonkey 38 | 
Callback syntax
typedef void (* OutOfMemoryCallback)(JSContext *cx, void *data);
| Name | Type | Description | 
|---|---|---|
| data | void * | dataparameter passed toJS::SetOutOfMemoryCallback. Added in SpiderMonkey 38 | 
Description
Unlike the error reporter, which is only called if the exception for an OOM bubbles up and is not caught, the JS::OutOfMemoryCallback is called immediately at the OOM site to allow the embedding to capture the current state of heap allocation before anything is freed. If the large-allocation-failure callback is called at all (not all allocation sites call the large-allocation-failure callback on failure), it is called before the out-of-memory callback; the out-of-memory callback is only called if the allocation still fails after the large-allocation-failure callback has returned.
JS::SetOutOfMemoryCallback sets a callback function for it.