altos/lisp: Cache freed cons and stack items
authorKeith Packard <keithp@keithp.com>
Tue, 15 Nov 2016 05:25:38 +0000 (21:25 -0800)
committerKeith Packard <keithp@keithp.com>
Fri, 18 Nov 2016 06:18:39 +0000 (22:18 -0800)
commitc0a56550cf647a1647392557e82bcaa96934cd51
treefe72c38d0dbc28626320bc41219f4d90a6254131
parent65fcd6afa22bfefb61420e668c16632657eb8b4f
altos/lisp: Cache freed cons and stack items

Track freed cons cells and stack items from the eval process where
possible so that they can be re-used without needing to collect.

This dramatically reduces the number of collect calls.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/lisp/ao_lisp.h
src/lisp/ao_lisp_cons.c
src/lisp/ao_lisp_eval.c
src/lisp/ao_lisp_lambda.c
src/lisp/ao_lisp_make_const.c
src/lisp/ao_lisp_mem.c
src/lisp/ao_lisp_save.c