summaryrefslogtreecommitdiff
path: root/src/lisp/ao_lisp_make_const.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-11-05 14:51:58 -0700
committerKeith Packard <keithp@keithp.com>2017-02-20 11:16:50 -0800
commit3366efb139653939f053c1fe4aba352ba3b66c94 (patch)
tree57c01798cfaef078e4e8ca11680a9bb748ed3334 /src/lisp/ao_lisp_make_const.c
parent6fc1ee0f7adc6fcb3e850bcbaabc1db705314234 (diff)
altos/lisp: Change GC move API
Pass reference to move API so it can change the values in-place, then let it return '1' when the underlying object has already been moved to shorten GC times. 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.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lisp/ao_lisp_make_const.c b/src/lisp/ao_lisp_make_const.c
index 9c2ea74c..9768dc22 100644
--- a/src/lisp/ao_lisp_make_const.c
+++ b/src/lisp/ao_lisp_make_const.c
@@ -45,7 +45,12 @@ struct builtin_func funcs[] = {
"-", AO_LISP_LEXPR, builtin_minus,
"*", AO_LISP_LEXPR, builtin_times,
"/", AO_LISP_LEXPR, builtin_divide,
- "%", AO_LISP_LEXPR, builtin_mod
+ "%", AO_LISP_LEXPR, builtin_mod,
+ "=", AO_LISP_LEXPR, builtin_equal,
+ "<", AO_LISP_LEXPR, builtin_less,
+ ">", AO_LISP_LEXPR, builtin_greater,
+ "<=", AO_LISP_LEXPR, builtin_less_equal,
+ ">=", AO_LISP_LEXPR, builtin_greater_equal,
};
ao_poly
@@ -92,7 +97,7 @@ main(int argc, char **argv)
printf("/*\n");
printf(" * Generated file, do not edit\n");
ao_lisp_root_add(&ao_lisp_frame_type, &globals);
- globals = ao_lisp_frame_new(0, 0);
+ globals = ao_lisp_frame_new(0);
for (f = 0; f < N_FUNC; f++) {
b = ao_lisp_make_builtin(funcs[f].func, funcs[f].args);
a = ao_lisp_atom_intern(funcs[f].name);
@@ -127,8 +132,6 @@ main(int argc, char **argv)
ao_lisp_collect();
printf(" */\n");
- globals->readonly = 1;
-
printf("#define AO_LISP_POOL_CONST %d\n", ao_lisp_top);
printf("extern const uint8_t ao_lisp_const[AO_LISP_POOL_CONST] __attribute__((aligned(4)));\n");
printf("#define ao_builtin_atoms 0x%04x\n", ao_lisp_atom_poly(ao_lisp_atoms));