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:
parent
494a650cbb
commit
421d95b3ea
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue