sfe = (ScriptFilenameEntry *) (filename - offsetof(ScriptFilenameEntry, filename)); JS_ASSERT(sfe->key == sfe->filename);
sfe = FILENAME_TO_SFE(filename); ASSERT_VALID_SFE(sfe);
js_MarkScriptFilename(const char *filename){    ScriptFilenameEntry *sfe;    /*     * Back up from filename by its offset within its hash table entry.     * The sfe->key member, redundant given sfe->filename but required by     * the old jshash.c code, here gives us a useful sanity check.  This     * assertion will very likely botch if someone tries to mark a string     * that wasn't allocated as an sfe->filename.     */    sfe = (ScriptFilenameEntry *)          (filename - offsetof(ScriptFilenameEntry, filename));    JS_ASSERT(sfe->key == sfe->filename);    sfe->mark = JS_TRUE;}