Initializes the JavaScript runtime.

Syntax

JSRuntime *
JS_NewRuntime(uint32_t maxbytes,
              uint32_t maxNurseryBytes = JS::DefaultNurseryBytes,
              JSRuntime *parentRuntime = nullptr);

JSRuntime *
JS_NewRuntime(uint32_t maxbytes, JSUseHelperThreads useHelperThreads,
              JSRuntime *parentRuntime = nullptr); // Deprecated since JSAPI 32
Name Type Description
maxbytes uint32 Maximum number of allocated bytes after which garbage collection is run.
maxNurseryBytes uint32 Nursery size in bytes. maxNurseryBytes is rounded down to a multiple of chunk size. Added in SpiderMonkey 38
parentRuntime JSRuntime * The topmost parent or nullptr . Added in SpiderMonkey 31

Description

JS_NewRuntime initializes the JavaScript runtime environment. Call JS_NewRuntime before making any other API calls except JS_Init. JS_NewRuntime allocates memory for the JSRuntime and initializes certain internal runtime structures. maxbytes specifies the number of allocated bytes after which garbage collection is run. If parentRuntime is specified, the resulting runtime shares significant amounts of read-only state (the self-hosting and initial atoms compartments). It is recommended to make use of this for every runtime in a process after the first one.

The returned JSRuntime can be used from the calling thread only. (The engine may use helper threads internally, though.)

On success, JS_NewRuntime returns a pointer to the newly created runtime, which the caller must later destroy using JS_DestroyRuntime. Otherwise it returns NULL.

Notes

Ordinarily, JS_NewRuntime should be the first JSAPI call in an application, and JS_DestroyRuntime and JS_ShutDown should be the last ones.

See Also