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:
Tom Hacohen 2015-10-15 17:51:20 +01:00
parent f7f7fc69cf
commit 9686e44b92
1 changed files with 7 additions and 6 deletions

View File

@ -277,8 +277,14 @@ static inline void
_eo_unref(_Eo_Object *obj)
{
--(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)
{
ERR("Object %p already destructed.", _eo_id_get(obj));
@ -320,11 +326,6 @@ _eo_unref(_Eo_Object *obj)
else
_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