This article covers features introduced in SpiderMonkey 31
Compile a script off thread for execution.
Syntax
bool
JS::CanCompileOffThread(JSContext *cx, const JS::ReadOnlyCompileOptions &options,
                        size_t length);
bool
JS::CompileOffThread(JSContext *cx, const JS::ReadOnlyCompileOptions &options,
                     const char16_t *chars, size_t length,
                     JS::OffThreadCompileCallback callback, void *callbackData);
JSScript *
JS::FinishOffThreadScript(JSContext *maybecx, JSRuntime *rt, void *token);
typedef void
(*JS::OffThreadCompileCallback)(void *token, void *callbackData);
| Name | Type | Description | 
|---|---|---|
| cx/maybe | JSContext * | Pointer to a JS context from which to derive runtime information. Requires request. In a JS_THREADSAFEbuild, the caller must be in a request on thisJSContext. | 
| rt | JSRuntime * | Pointer to a JS runtime. | 
| options | JS::ReadOnlyCompileOptions & | Compile options. | 
| chars | const char16_t * | String containing the script to compile. | 
| length | size_t | The length of charsorbytes, in characters. | 
| callback | JS::OffThreadCompileCallback | A callback function invoked when the compilation. | 
| callbackData/token | void * | Pointer to application-defined data. | 
Description
JS::CompileOffThread compiles a script, chars for execution.
The script is associated with a JS object. chars is the string containing the text of the script. length indicates the size of the text version of the script in characters.
After successfully triggering an off thread compile of a script, the callback will eventually be invoked with the specified data and a token for the compilation. The callback will be invoked while off the main thread, so its operations must be thread safe. Afterwards, JS::FinishOffThreadScript must be invoked on the main thread to get the result script or nullptr. If maybecx is not specified, the resources will be freed, but no script will be returned.
The characters passed in to JS::CompileOffThread must remain live until the callback is invoked, and the resulting script will be rooted until the call to FinishOffThreadScript.
See Also
- The JSAPI User Guide contains example code using compiled scripts.
- MXR ID Search for JS::CompileOffThread
- JS::Evaluate
- JS::Compile
- JS::CompileFunction
- JS_DecompileScript
- bug 897655