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>
Mon, 20 Feb 2017 19:16:50 +0000 (11:16 -0800)
commit5557f6b87a9b8bc9716de8191f2062a772a6ae6c
tree65f437f42e7ab4b49587c7f70f4105b99409e45c
parentce549b2c11e6b2571590021e1c0503d8a6e7a702
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