likely, unlikely: convenience portability macros for branch prediction
Those are the same as the Linux kernel macros, and probably a bunch of
other projects. Usage:
if (likely(condition))
branch_likely_taken();
if (unlikely(condition))
branch_unlikely_taken();
Attention: those two macros convert the predicate to a boolean value.
Therefore you generally cannot use them for assignments like this:
void *p_sys = likely (malloc (sizeof (*p_sys)));
if (!p_sys)
return VLC_ENOMEM;
Instead you can do this:
void *p_sys = malloc (sizeof (*p_sys));
if (unlikely (!p_sys))
return VLC_ENOMEM;