summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-04-20 06:19:04 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-04-20 06:19:04 -0700
commitc636a168cd57ca5db253db7a0907f06621a6991e (patch)
treeff2626d075047b04dd91b432ad96a3ff348452f2 /lib.h
parentf852a574e4a33ae81d257eb372d2d6947625d81e (diff)
downloadtxr-c636a168cd57ca5db253db7a0907f06621a6991e.tar.gz
txr-c636a168cd57ca5db253db7a0907f06621a6991e.tar.bz2
txr-c636a168cd57ca5db253db7a0907f06621a6991e.zip
Mechanism for recycling conses outside of GC.
* lib.c (recycled_conses): New static variable. (rcyc_pop, rcyc_cons, rcyc_list, rcyc_empty): New functions. (cons): Take a recycled cons, if available. * lib.h (rcyc_pop, rcyc_cons, rcyc_list, rcyc_empty): Declared. * gc.c (gc): Call rcyc_empty to make recycle_list unreachable.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index 51d51fc6..e84e5eac 100644
--- a/lib.h
+++ b/lib.h
@@ -501,6 +501,7 @@ val nthcdr(val pos, val list);
loc ltail(loc cons);
val pop(val *plist);
val upop(val *plist, val *pundo);
+val rcyc_pop(val *plist);
val push(val v, val *plist);
val copy_list(val list);
val make_like(val list, val thatobj);
@@ -577,6 +578,9 @@ mem_t *chk_copy_obj(mem_t *orig, size_t size);
val cons(val car, val cdr);
val make_lazy_cons(val func);
val make_half_lazy_cons(val func, val car);
+void rcyc_cons(val cons);
+void rcyc_list(val list);
+void rcyc_empty(void);
val lcons_fun(val lcons);
val list(val first, ...); /* terminated by nao */
val listv(struct args *);