mozilla
Your Search Results

    JS_ClearNewbornRoots

    Obsolete since JSAPI 5
    This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

    Clear a context's newborn roots, which temporarily protect newly allocated values from garbage collection.

    Syntax

    void
    JS_ClearNewbornRoots(JSContext *cx);
    
    Name Type Description
    cx JSContext * The context to clear.

    Description

    The last GC thing of each type (object, string, double, external string types) created on a given context is kept alive until another thing of the same type is created, using a newborn root in the context. These newborn roots help native code protect newly-created GC-things from GC invocations activated before those things can be rooted using local or global roots.

    However, the newborn roots can also entrain great gobs of garbage, so the JS_GC entry point clears them for the context on which GC is being forced. Embeddings may need to do likewise for all contexts.

    See JS_EnterLocalRootScope for a better way to manage newborns in cases where native hooks (functions, getters, setters, etc.) create many GC-things, potentially without connecting them to predefined local roots such as *rval or argv[i] in an active JSNative function. Using JS_EnterLocalRootScope disables updating of the context's per-gc-thing-type newborn roots, until control flow unwinds and leaves the outermost nesting local root scope.

    See Also

    Document Tags and Contributors

    Contributors to this page: tschneidereit, fscholz, markg, Jorend, arai
    Last updated by: arai,
    Hide Sidebar