DISPATCH_NOINLINE _os_object_t _os_object_retain_with_resurrect(_os_object_t obj) { int xref_cnt = _os_object_xrefcnt_inc(obj); if (slowpath(xref_cnt < 0)) { _OS_OBJECT_CLIENT_CRASH("Resurrection of an overreleased object"); } if (slowpath(xref_cnt == 0)) { _os_object_retain_internal(obj); } return obj; }
void _dispatch_retain(dispatch_object_t dou) { (void)_os_object_retain_internal(dou._os_obj); }