if (!sfe) { JS_ReportOutOfMemory(cx); return NULL; }
js_SaveScriptFilename(JSContext *cx, const char *filename){    JSRuntime *rt = cx->runtime;    JSHashTable *table;    JSHashNumber hash;    JSHashEntry **hep;    ScriptFilenameEntry *sfe;    JS_ACQUIRE_LOCK(rt->scriptFilenameTableLock);    table = rt->scriptFilenameTable;    hash = JS_HashString(filename);    hep = JS_HashTableRawLookup(table, hash, filename);    sfe = (ScriptFilenameEntry *) *hep;#ifdef DEBUG_brendan    if (sfe)        sftbl_savings += strlen(sfe->filename);#endif    if (!sfe) {        sfe = (ScriptFilenameEntry *)              JS_HashTableRawAdd(table, hep, hash, filename, NULL);        if (sfe) {            sfe->key = strcpy(sfe->filename, filename);            JS_ASSERT(!sfe->mark);        }    }    JS_RELEASE_LOCK(rt->scriptFilenameTableLock);    if (!sfe) {        JS_ReportOutOfMemory(cx);        return NULL;    }    return sfe->filename;}