From 60478b74f6dc867dcf0fe09c5a97b2246fc4df3e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 7 May 2016 19:29:28 -0700 Subject: Avoid unnecessary evaluation in argument defaulting. * lib.h (default_arg): Inline function becomes macro, so we can avoid evaluating the default value expression when it is not needed. * lib.c (default_arg): Declaration removed. --- lib.c | 1 - lib.h | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/lib.c b/lib.c index 51a862b5..c5d0b27e 100644 --- a/lib.c +++ b/lib.c @@ -140,7 +140,6 @@ val chr(wchar_t ch); val eq(val a, val b); val null(val v); int null_or_missing_p(val v); -val default_arg(val arg, val dfl); val default_bool_arg(val arg); #endif diff --git a/lib.h b/lib.h index 3dc75d61..18f7f6d9 100644 --- a/lib.h +++ b/lib.h @@ -1024,10 +1024,7 @@ INLINE int null_or_missing_p(val v) { return (nilp(v) || missingp(v)); } #define tnil(c_cond) ((c_cond) ? t : nil) -INLINE val default_arg(val arg, val dfl) -{ - return if3(null_or_missing_p(arg), dfl, arg); -} +#define default_arg(arg, dfl) if3(null_or_missing_p(arg), dfl, arg) INLINE val default_bool_arg(val arg) { -- cgit v1.2.3