/* NB: cx unused; js_FinishAtomState calls us with null cx. */ void js_FreeAtomState(JSContext *cx, JSAtomState *state) { JS_HashTableDestroy(state->table); #ifdef JS_THREADSAFE js_FinishLock(&state->lock); #endif memset(state, 0, sizeof *state); }
void js_FinishAtomState(JSRuntime *rt) { JSAtomState *state = &rt->atomState; if (!IS_INITIALIZED_STATE(state)) { /* * We are called with uninitialized state when JS_NewRuntime fails and * calls JS_DestroyRuntime on a partially initialized runtime. */ return; } JS_DHashTableEnumerate(&state->stringAtoms, js_string_uninterner, rt); JS_DHashTableFinish(&state->stringAtoms); JS_DHashTableFinish(&state->doubleAtoms); #ifdef JS_THREADSAFE js_FinishLock(&state->lock); #endif #ifdef DEBUG memset(state, JS_FREE_PATTERN, sizeof *state); #endif }