Visit Mozilla.org

JS NewContext

From MDC

Create a new JSContext.

[edit] Syntax

JSContext * JS_NewContext(JSRuntime *rt, size_t stackchunksize);
Name Type Description
rt JSRuntime * Parent runtime for the new context. JavaScript objects, functions, strings, and numbers may be shared among the contexts in a JSRuntime, but they cannot be shared across JSRuntimes.
stackchunksize size_t The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. 8192 is a good default value.

[edit] Description

JS_NewContext creates a new JSContext in the runtime rt. On success, it returns a pointer to the new context. Otherwise it returns NULL. For more details about contexts, see JSContext. For sample code that creates and initializes a JSContext, see Embedding SpiderMonkey: JSAPI basics.

The stackchunksize parameter does not control the JavaScript stack size. (The JSAPI does not provide a way to adjust the stack depth limit.) Passing a large number for stackchunksize is a mistake. In a DEBUG build, large chunk sizes can degrade performance dramatically. The usual value of 8192 is recommended.

The application must call JS_DestroyContext when it is done using the context. Before a JSRuntime may be destroyed, all the JSContexts associated with it must be destroyed.

The new JSContext initially has no global object.

In a JS_THREADSAFE build, the new JSContext is initially associated with the calling thread. As long as it stays associated with that thread, no other thread may use it or destroy it. A JSContext may be transferred from one thread to another using JS_ClearContextThread and JS_SetContextThread.

[edit] See Also

LXR ID Search for JS_NewContext

JS_ContextIterator, JS_SetContextCallback