diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-03-31 06:18:20 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-03-31 06:18:20 -0700 |
commit | 5fbacce2db6e38384adb650ce32af7c2dcbcbe95 (patch) | |
tree | 0311c9d2c20936ce627a82f6db9b191cc81b526a /gc.h | |
parent | 34bc9081f5f95217b2bd544f6601d48b682297c6 (diff) | |
download | txr-5fbacce2db6e38384adb650ce32af7c2dcbcbe95.tar.gz txr-5fbacce2db6e38384adb650ce32af7c2dcbcbe95.tar.bz2 txr-5fbacce2db6e38384adb650ce32af7c2dcbcbe95.zip |
Deal with spurious retention in function application.
* gc.h (zap): New inline function.
(z): New macro.
* lib.c (generic_funcall, funcall1, funcall2, funcall4, do_not,
do_dup, do_iff): Use z macro to burn funargs with no next use.
* eval.c (apply, apply_frob_args, iapply, call, do_eval,
op_dwim, mapcarv, mappendv, lazy_mapcarv_func, mapdov, do_apf,
do_ipf, callf): Use z macro to burn funargs with no next use.
Diffstat (limited to 'gc.h')
-rw-r--r-- | gc.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -55,3 +55,6 @@ extern val break_obj; #define gc_hint(var) gc_hint_func(&var) #define REACHABLE 0x100 #define FREE 0x200 + +INLINE val zap(volatile val *loc) { val ret = *loc; *loc = nil; return ret; } +#define z(lvalue) zap(&lvalue) |