summaryrefslogtreecommitdiff
path: root/src/lisp/ao_lisp_make_const.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-11-14 21:25:38 -0800
committerKeith Packard <keithp@keithp.com>2017-02-20 11:16:50 -0800
commit5557f6b87a9b8bc9716de8191f2062a772a6ae6c (patch)
tree65f437f42e7ab4b49587c7f70f4105b99409e45c /src/lisp/ao_lisp_make_const.c
parentce549b2c11e6b2571590021e1c0503d8a6e7a702 (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_make_const.c')
-rw-r--r--src/lisp/ao_lisp_make_const.c54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/lisp/ao_lisp_make_const.c b/src/lisp/ao_lisp_make_const.c
index 6a29f402..178b041e 100644
--- a/src/lisp/ao_lisp_make_const.c
+++ b/src/lisp/ao_lisp_make_const.c
@@ -33,42 +33,42 @@ struct builtin_func {
};
struct builtin_func funcs[] = {
- "eval", AO_LISP_FUNC_LAMBDA, builtin_eval,
- "read", AO_LISP_FUNC_LAMBDA, builtin_read,
+ "eval", AO_LISP_FUNC_F_LAMBDA, builtin_eval,
+ "read", AO_LISP_FUNC_F_LAMBDA, builtin_read,
"lambda", AO_LISP_FUNC_NLAMBDA, builtin_lambda,
"lexpr", AO_LISP_FUNC_NLAMBDA, builtin_lexpr,
"nlambda", AO_LISP_FUNC_NLAMBDA, builtin_nlambda,
"macro", AO_LISP_FUNC_NLAMBDA, builtin_macro,
- "car", AO_LISP_FUNC_LAMBDA, builtin_car,
- "cdr", AO_LISP_FUNC_LAMBDA, builtin_cdr,
- "cons", AO_LISP_FUNC_LAMBDA, builtin_cons,
- "last", AO_LISP_FUNC_LAMBDA, builtin_last,
- "length", AO_LISP_FUNC_LAMBDA, builtin_length,
+ "car", AO_LISP_FUNC_F_LAMBDA, builtin_car,
+ "cdr", AO_LISP_FUNC_F_LAMBDA, builtin_cdr,
+ "cons", AO_LISP_FUNC_F_LAMBDA, builtin_cons,
+ "last", AO_LISP_FUNC_F_LAMBDA, builtin_last,
+ "length", AO_LISP_FUNC_F_LAMBDA, builtin_length,
"quote", AO_LISP_FUNC_NLAMBDA, builtin_quote,
- "set", AO_LISP_FUNC_LAMBDA, builtin_set,
+ "set", AO_LISP_FUNC_F_LAMBDA, builtin_set,
"setq", AO_LISP_FUNC_MACRO, builtin_setq,
"cond", AO_LISP_FUNC_NLAMBDA, builtin_cond,
"progn", AO_LISP_FUNC_NLAMBDA, builtin_progn,
"while", AO_LISP_FUNC_NLAMBDA, builtin_while,
- "print", AO_LISP_FUNC_LEXPR, builtin_print,
- "patom", AO_LISP_FUNC_LEXPR, builtin_patom,
- "+", AO_LISP_FUNC_LEXPR, builtin_plus,
- "-", AO_LISP_FUNC_LEXPR, builtin_minus,
- "*", AO_LISP_FUNC_LEXPR, builtin_times,
- "/", AO_LISP_FUNC_LEXPR, builtin_divide,
- "%", AO_LISP_FUNC_LEXPR, builtin_mod,
- "=", AO_LISP_FUNC_LEXPR, builtin_equal,
- "<", AO_LISP_FUNC_LEXPR, builtin_less,
- ">", AO_LISP_FUNC_LEXPR, builtin_greater,
- "<=", AO_LISP_FUNC_LEXPR, builtin_less_equal,
- ">=", AO_LISP_FUNC_LEXPR, builtin_greater_equal,
- "pack", AO_LISP_FUNC_LAMBDA, builtin_pack,
- "unpack", AO_LISP_FUNC_LAMBDA, builtin_unpack,
- "flush", AO_LISP_FUNC_LAMBDA, builtin_flush,
- "delay", AO_LISP_FUNC_LAMBDA, builtin_delay,
- "led", AO_LISP_FUNC_LEXPR, builtin_led,
- "save", AO_LISP_FUNC_LAMBDA, builtin_save,
- "restore", AO_LISP_FUNC_LAMBDA, builtin_restore,
+ "print", AO_LISP_FUNC_F_LEXPR, builtin_print,
+ "patom", AO_LISP_FUNC_F_LEXPR, builtin_patom,
+ "+", AO_LISP_FUNC_F_LEXPR, builtin_plus,
+ "-", AO_LISP_FUNC_F_LEXPR, builtin_minus,
+ "*", AO_LISP_FUNC_F_LEXPR, builtin_times,
+ "/", AO_LISP_FUNC_F_LEXPR, builtin_divide,
+ "%", AO_LISP_FUNC_F_LEXPR, builtin_mod,
+ "=", AO_LISP_FUNC_F_LEXPR, builtin_equal,
+ "<", AO_LISP_FUNC_F_LEXPR, builtin_less,
+ ">", AO_LISP_FUNC_F_LEXPR, builtin_greater,
+ "<=", AO_LISP_FUNC_F_LEXPR, builtin_less_equal,
+ ">=", AO_LISP_FUNC_F_LEXPR, builtin_greater_equal,
+ "pack", AO_LISP_FUNC_F_LAMBDA, builtin_pack,
+ "unpack", AO_LISP_FUNC_F_LAMBDA, builtin_unpack,
+ "flush", AO_LISP_FUNC_F_LAMBDA, builtin_flush,
+ "delay", AO_LISP_FUNC_F_LAMBDA, builtin_delay,
+ "led", AO_LISP_FUNC_F_LEXPR, builtin_led,
+ "save", AO_LISP_FUNC_F_LAMBDA, builtin_save,
+ "restore", AO_LISP_FUNC_F_LAMBDA, builtin_restore,
};
#define N_FUNC (sizeof funcs / sizeof funcs[0])