libbluray | branch: master | hpi1 <[email protected]> | Sun Mar 10 19:35:46 2013 +0200| [733d98129dab66f55227d978c7743416eb3e81f7] | committer: hpi1
Optimized bd_debug calling: check debug mask before calling the function. Optimize branches for no logging. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=733d98129dab66f55227d978c7743416eb3e81f7 --- src/util/attributes.h | 8 ++++++++ src/util/logging.c | 2 +- src/util/logging.h | 10 ++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/util/attributes.h b/src/util/attributes.h index cbaade6..c16853e 100644 --- a/src/util/attributes.h +++ b/src/util/attributes.h @@ -46,4 +46,12 @@ # define BD_PRIVATE #endif +#if !defined(__GNUC__) || __GNUC__ < 3 +# define BD_LIKELY(x) (x) +# define BD_UNLIKELY(x) (x) +#else +# define BD_LIKELY(x) __builtin_expect((x),1) +# define BD_UNLIKELY(x) __builtin_expect((x),0) +#endif + #endif /* LIBBLURAY_ATTRIBUTES_H_ */ diff --git a/src/util/logging.c b/src/util/logging.c index 1fa63d0..d881478 100644 --- a/src/util/logging.c +++ b/src/util/logging.c @@ -25,7 +25,7 @@ #include <stdarg.h> #include <string.h> -static uint32_t debug_mask = DBG_CRIT; +uint32_t debug_mask = DBG_CRIT; static BD_LOG_FUNC log_func = NULL; void bd_set_debug_handler(BD_LOG_FUNC f) diff --git a/src/util/logging.h b/src/util/logging.h index 2c281be..6c68eff 100644 --- a/src/util/logging.h +++ b/src/util/logging.h @@ -27,8 +27,14 @@ #include <stdint.h> -#define BD_DEBUG(MASK,...) bd_debug(__FILE__,__LINE__,MASK,__VA_ARGS__) - +BD_PRIVATE extern uint32_t debug_mask; + +#define BD_DEBUG(MASK,...) \ + do { \ + if (BD_UNLIKELY((MASK) & debug_mask)) { \ + bd_debug(__FILE__,__LINE__,MASK,__VA_ARGS__); \ + } \ + } while (0) BD_PRIVATE char *print_hex(char *out, const uint8_t *str, int count); BD_PRIVATE void bd_debug(const char *file, int line, uint32_t mask, const char *format, ...) BD_ATTR_FORMAT_PRINTF(4,5); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
