summaryrefslogtreecommitdiff
path: root/src/lisp/ao_lisp_lambda.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-11-14 21:25:38 -0800
committerKeith Packard <keithp@keithp.com>2016-11-17 22:18:39 -0800
commitc0a56550cf647a1647392557e82bcaa96934cd51 (patch)
treefe72c38d0dbc28626320bc41219f4d90a6254131 /src/lisp/ao_lisp_lambda.c
parent65fcd6afa22bfefb61420e668c16632657eb8b4f (diff)
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>
Diffstat (limited to 'src/lisp/ao_lisp_lambda.c')
-rw-r--r--src/lisp/ao_lisp_lambda.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lisp/ao_lisp_lambda.c b/src/lisp/ao_lisp_lambda.c
index 6020a8b8..0dd8c698 100644
--- a/src/lisp/ao_lisp_lambda.c
+++ b/src/lisp/ao_lisp_lambda.c
@@ -168,6 +168,7 @@ ao_lisp_lambda_eval(void)
args = ao_lisp_poly_cons(args->cdr);
vals = ao_lisp_poly_cons(vals->cdr);
}
+ ao_lisp_cons_free(cons);
break;
}
case AO_LISP_FUNC_LEXPR: