Remove declarations in VERIFY3_IMPL to save stack

This has a minor impact on stack usage of individual functions, but the
VERIFY macros are used so frequently that their overhead may add up.
This macro declared two new local variables to cast its argument types.
Doing the typecast inline eliminates the need for these variables.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
Ned Bass 2010-07-29 16:28:34 -07:00 committed by Brian Behlendorf
parent 494a650cbb
commit 421d95b3ea
1 changed files with 2 additions and 4 deletions

View File

@ -65,13 +65,11 @@ extern void __assert(const char *, const char *, int);
/* BEGIN CSTYLED */
#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE) do { \
const TYPE __left = (TYPE)(LEFT); \
const TYPE __right = (TYPE)(RIGHT); \
if (!(__left OP __right)) { \
if (!((TYPE)(LEFT) OP (TYPE)(RIGHT))) { \
char *__buf = alloca(256); \
(void) snprintf(__buf, 256, "%s %s %s (0x%llx %s 0x%llx)", \
#LEFT, #OP, #RIGHT, \
(u_longlong_t)__left, #OP, (u_longlong_t)__right); \
(u_longlong_t)(LEFT), #OP, (u_longlong_t)(RIGHT)); \
__assert(__buf, __FILE__, __LINE__); \
} \
} while (0)