chars = JSSTRDEP_CHARS(str);
valid = JS_TRUE;
js_FinalizeStringRT(JSRuntime *rt, JSString *str){    jschar *chars;    size_t length;    JSHashNumber hash;    JSHashEntry *he, **hep;    JS_RUNTIME_UNMETER(rt, liveStrings);    if (JSSTRING_IS_DEPENDENT(str)) {        JS_RUNTIME_UNMETER(rt, liveDependentStrings);        chars = JSSTRDEP_CHARS(str);        length = JSSTRDEP_LENGTH(str);    } else {        chars = str->chars;        length = str->length;        free(chars);    }    if (chars) {        str->chars = NULL;        if (deflated_string_cache) {            hash = js_hash_string_pointer(str);            JS_ACQUIRE_LOCK(deflated_string_cache_lock);            hep = JS_HashTableRawLookup(deflated_string_cache, hash, str);            he = *hep;            if (he) {                free(he->value);                JS_HashTableRawRemove(deflated_string_cache, hep, he);                deflated_string_cache_bytes -= length;            }            JS_RELEASE_LOCK(deflated_string_cache_lock);        }    }    str->length = 0;}