js_FreeRuntimeScriptState(rt);
JS_DestroyRuntime(JSRuntime *rt){#ifdef DEBUG    /* Don't hurt everyone in leaky ol' Mozilla with a fatal JS_ASSERT! */    if (!JS_CLIST_IS_EMPTY(&rt->contextList)) {        JSContext *cx, *iter = NULL;        uintN cxcount = 0;        while ((cx = js_ContextIterator(rt, JS_TRUE, &iter)) != NULL)            cxcount++;        fprintf(stderr,"JS API usage error: %u contexts left in runtime upon JS_DestroyRuntime.\n",                cxcount);    }#endif    js_FinishAtomState(&rt->atomState);    js_FinishGC(rt);#ifdef JS_THREADSAFE    if (rt->gcLock)        JS_DESTROY_LOCK(rt->gcLock);    if (rt->gcDone)        JS_DESTROY_CONDVAR(rt->gcDone);    if (rt->requestDone)        JS_DESTROY_CONDVAR(rt->requestDone);    if (rt->rtLock)        JS_DESTROY_LOCK(rt->rtLock);    if (rt->stateChange)        JS_DESTROY_CONDVAR(rt->stateChange);    if (rt->setSlotLock)        JS_DESTROY_LOCK(rt->setSlotLock);    if (rt->setSlotDone)        JS_DESTROY_CONDVAR(rt->setSlotDone);    if (rt->scopeSharingDone)        JS_DESTROY_CONDVAR(rt->scopeSharingDone);#endif    js_FinishPropertyTree(rt);    free(rt);}