summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-04-03 11:20:41 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-04-03 11:20:41 -0700
commit1ce504148e960fa8fdd3701977786b99a7437f57 (patch)
tree30414fdc38771f8aac55cb880d437f8d1db5a87d /lib.h
parent06ced4e18fd69399e7419a59dbe477e9a92c23e1 (diff)
downloadtxr-1ce504148e960fa8fdd3701977786b99a7437f57.tar.gz
txr-1ce504148e960fa8fdd3701977786b99a7437f57.tar.bz2
txr-1ce504148e960fa8fdd3701977786b99a7437f57.zip
* eval.c (op_modplace): push replaced with mpush (mutating push).
* gc.c (gc_push): New function. * gc.h (gc_push): Declared. * hash.c (pushhash): Use mpush. * lib.c (push): Reverted to unsafe operation. TODO comment replaced with warning. (lazy_flatten_scan): push occurence commented as safe. (lazy_stream_func): Unsafe push replaced with mpush. * lib.h (mpush): New macro.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index 45bfae30..61af0d45 100644
--- a/lib.h
+++ b/lib.h
@@ -231,9 +231,11 @@ union obj {
#if CONFIG_GEN_GC
#define set(place, val) ((place) = (val))
#define mut(obj)
+#define mpush(val, place) (push(val, &(place)))
#else
#define set(place, val) (gc_set(&(place), val))
#define mut(obj) (gc_mutated(obj));
+#define mpush(val, place) (gc_push(val, &(place)))
#endif
INLINE cnum tag(val obj) { return ((cnum) obj) & TAG_MASK; }