Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6788:993760061348 HEAD
Added likely() and unlikely() macros. Use unlikely() with asserts.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 11 Nov 2007 23:29:41 +0200 |
parents | b0dc70ac3372 |
children | ee9bc72e0ed2 |
files | src/lib/macros.h |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/macros.h Sun Nov 11 21:33:33 2007 +0200 +++ b/src/lib/macros.h Sun Nov 11 23:29:41 2007 +0200 @@ -168,23 +168,31 @@ # define GNUC_PRETTY_FUNCTION "" #endif +#ifdef __GNUC__ +# define unlikely(expr) __builtin_expect(!!(expr), 0) +# define likely(expr) __builtin_expect(!!(expr), 1) +#else +# define unlikely(expr) +# define likely(expr) +#endif + /* Provide macros for error handling. */ #ifdef DISABLE_ASSERTS # define i_assert(expr) #elif defined (__GNUC__) && !defined (__STRICT_ANSI__) #define i_assert(expr) STMT_START{ \ - if (!(expr)) \ + if (unlikely(!(expr))) \ i_panic("file %s: line %d (%s): assertion failed: (%s)", \ - __FILE__, \ - __LINE__, \ + __FILE__, \ + __LINE__, \ __PRETTY_FUNCTION__, \ #expr); }STMT_END #else /* !__GNUC__ */ #define i_assert(expr) STMT_START{ \ - if (!(expr)) \ + if (unlikely(!(expr))) \ i_panic("file %s: line %d: assertion failed: (%s)", \ __FILE__, \ __LINE__, \