forked from enlightenment/efl
Eo unref: Decrease amount of checks and hint branch prediction.
This may look minor, but this is such a hot path, that this actually speeds things up a bit.
This commit is contained in:
parent
f7f7fc69cf
commit
9686e44b92
|
@ -277,8 +277,14 @@ static inline void
|
||||||
_eo_unref(_Eo_Object *obj)
|
_eo_unref(_Eo_Object *obj)
|
||||||
{
|
{
|
||||||
--(obj->refcount);
|
--(obj->refcount);
|
||||||
if (obj->refcount == 0)
|
if (EINA_UNLIKELY(obj->refcount <= 0))
|
||||||
{
|
{
|
||||||
|
if (obj->refcount < 0)
|
||||||
|
{
|
||||||
|
ERR("Obj:%p. Refcount (%d) < 0. Too many unrefs.", obj, obj->refcount);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (obj->destructed)
|
if (obj->destructed)
|
||||||
{
|
{
|
||||||
ERR("Object %p already destructed.", _eo_id_get(obj));
|
ERR("Object %p already destructed.", _eo_id_get(obj));
|
||||||
|
@ -320,11 +326,6 @@ _eo_unref(_Eo_Object *obj)
|
||||||
else
|
else
|
||||||
_eo_ref(obj); /* If we manual free, we keep a phantom ref. */
|
_eo_ref(obj); /* If we manual free, we keep a phantom ref. */
|
||||||
}
|
}
|
||||||
else if (obj->refcount < 0)
|
|
||||||
{
|
|
||||||
ERR("Obj:%p. Refcount (%d) < 0. Too many unrefs.", obj, obj->refcount);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue