_destroyJSDScript(jsdc, jsdscript);
JS_HashTableRemove(jsdc->scriptsTable, (void *)script);
jsd_DestroyScriptHookProc(                 JSContext   *cx,                JSScript    *script,                void*       callerdata ){    JSDScript* jsdscript = NULL;    JSDContext* jsdc = (JSDContext*) callerdata;    JSD_ScriptHookProc      hook;    void*                   hookData;        JSD_ASSERT_VALID_CONTEXT(jsdc);    if( JSD_IS_DANGEROUS_THREAD(jsdc) )        return;        JSD_LOCK_SCRIPTS(jsdc);    jsdscript = jsd_FindJSDScript(jsdc, script);    JSD_UNLOCK_SCRIPTS(jsdc);    if( ! jsdscript )        return;#ifdef JSD_DUMP    JSD_LOCK_SCRIPTS(jsdc);    _dumpJSDScript(jsdc, jsdscript, "***DESTROY Script: ");    JSD_UNLOCK_SCRIPTS(jsdc);#endif /* JSD_DUMP */    /* local in case hook gets cleared on another thread */    JSD_LOCK();    hook = jsdc->scriptHook;    hookData = jsdc->scriptHookData;    JSD_UNLOCK();    if( hook )        hook(jsdc, jsdscript, JS_FALSE, hookData);    JSD_LOCK_SCRIPTS(jsdc);    _destroyJSDScript(jsdc, jsdscript);    JSD_UNLOCK_SCRIPTS(jsdc);#ifdef JSD_DUMP    JSD_LOCK_SCRIPTS(jsdc);    _dumpJSDScriptList(jsdc);    JSD_UNLOCK_SCRIPTS(jsdc);#endif /* JSD_DUMP */}                