mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
introduce pa_assert_fp() for fast path assertions
This commit is contained in:
parent
fe3709c5c7
commit
bd3154a861
2 changed files with 24 additions and 4 deletions
|
|
@ -851,6 +851,14 @@ int main(int argc, char *argv[]) {
|
|||
pa_log_debug(_("Optimized build: no"));
|
||||
#endif
|
||||
|
||||
#ifdef NDEBUG
|
||||
pa_log_debug(_("NDEBUG defined, all asserts disabled."));
|
||||
#elif defined(FASTPATH)
|
||||
pa_log_debug(_("FASTPATH defined, only fast path asserts disabled."));
|
||||
#else
|
||||
pa_log_debug(_("All asserts enabled."));
|
||||
#endif
|
||||
|
||||
if (!(s = pa_machine_id())) {
|
||||
pa_log(_("Failed to get machine ID"));
|
||||
goto finish;
|
||||
|
|
|
|||
|
|
@ -164,8 +164,8 @@ typedef int pa_bool_t;
|
|||
|
||||
#define pa_return_null_if_fail(expr) pa_return_val_if_fail(expr, NULL)
|
||||
|
||||
/* An assert which guarantees side effects of x, i.e. is never
|
||||
* optimized away */
|
||||
/* pa_assert_se() is an assert which guarantees side effects of x,
|
||||
* i.e. is never optimized away, regardless of NDEBUG or FASTPATH. */
|
||||
#define pa_assert_se(expr) \
|
||||
do { \
|
||||
if (PA_UNLIKELY(!(expr))) { \
|
||||
|
|
@ -174,11 +174,23 @@ typedef int pa_bool_t;
|
|||
} \
|
||||
} while (FALSE)
|
||||
|
||||
/* An assert that may be optimized away by defining NDEBUG */
|
||||
/* Does exactly nothing */
|
||||
#define pa_nop() do {} while (FALSE)
|
||||
|
||||
/* pa_assert() is an assert that may be optimized away by defining
|
||||
* NDEBUG. pa_assert_fp() is an assert that may be optimized away by
|
||||
* defining FASTPATH. It is supposed to be used in inner loops. It's
|
||||
* there for extra paranoia checking and should probably be removed in
|
||||
* production builds. */
|
||||
#ifdef NDEBUG
|
||||
#define pa_assert(expr) do {} while (FALSE)
|
||||
#define pa_assert(expr) pa_nop()
|
||||
#define pa_assert_fp(expr) pa_nop()
|
||||
#elif defined (FASTPATH)
|
||||
#define pa_assert(expr) pa_assert_se(expr)
|
||||
#define pa_assert_fp(expr) pa_nop()
|
||||
#else
|
||||
#define pa_assert(expr) pa_assert_se(expr)
|
||||
#define pa_assert_fp(expr) pa_assert_se(expr)
|
||||
#endif
|
||||
|
||||
#define pa_assert_not_reached() \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue