diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-04-20 06:19:04 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-04-20 06:19:04 -0700 |
commit | c636a168cd57ca5db253db7a0907f06621a6991e (patch) | |
tree | ff2626d075047b04dd91b432ad96a3ff348452f2 /lib.h | |
parent | f852a574e4a33ae81d257eb372d2d6947625d81e (diff) | |
download | txr-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.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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 *); |