void jsd_ObjectHook(JSContext *cx, JSObject *obj, JSBool isNew, void *closure) { JSDObject* jsdobj; JSDContext* jsdc = (JSDContext*) closure; if( ! jsdc || ! jsdc->inited ) return; JSD_LOCK_OBJECTS(jsdc); if(isNew) { jsdobj = _createJSDObject(jsdc, cx, obj); TRACEOBJ(jsdc, jsdobj, 0); } else { jsdobj = jsd_GetJSDObjectForJSObject(jsdc, obj); if( jsdobj ) { TRACEOBJ(jsdc, jsdobj, 1); _destroyJSDObject(jsdc, jsdobj); } } JSD_UNLOCK_OBJECTS(jsdc); }
void jsd_DestroyObjects(JSDContext* jsdc) { JSD_LOCK_OBJECTS(jsdc); while( !JS_CLIST_IS_EMPTY(&jsdc->objectsList) ) _destroyJSDObject(jsdc, (JSDObject*)JS_NEXT_LINK(&jsdc->objectsList)); JSD_UNLOCK_OBJECTS(jsdc); }