if (iter_state != JSVAL_NULL) OBJ_ENUMERATE(cx, obj, JSENUMERATE_DESTROY, &iter_state, NULL);
iteratee = obj->slots[JSSLOT_PARENT]; if (iter_state != JSVAL_NULL && !JSVAL_IS_PRIMITIVE(iteratee)) { OBJ_ENUMERATE(cx, JSVAL_TO_OBJECT(iteratee), JSENUMERATE_DESTROY, &iter_state, NULL); } js_RemoveRoot(cx, &obj->slots[JSSLOT_PARENT]);
prop_iterator_finalize(JSContext *cx, JSObject *obj){    jsval iter_state;    /* Protect against stillborn iterators. */    iter_state = obj->slots[JSSLOT_ITR_STATE];    if (iter_state != JSVAL_NULL)	OBJ_ENUMERATE(cx, obj, JSENUMERATE_DESTROY, &iter_state, NULL);}