altos/lisp: Separate out values from atoms
authorKeith Packard <keithp@keithp.com>
Thu, 3 Nov 2016 05:56:01 +0000 (22:56 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 18 Nov 2016 06:18:39 +0000 (22:18 -0800)
commit71bf5774083e7f0d87ea609a73d6cfb7f60de9d9
tree142c088e920ddd3646b685a40741e5358afc19e6
parentd134a38c57429070ee5d4f74dafca4489e4b1443
altos/lisp: Separate out values from atoms

This enables changing values of atoms declared as constants, should
enable lets, and with some work, even lexical scoping.

this required changing the constant computation to run
ao_lisp_collect() before dumping the block of constant data, and that
uncovered some minor memory manager bugs.

Signed-off-by: Keith Packard <keithp@keithp.com>
14 files changed:
src/lisp/Makefile
src/lisp/ao_lisp.h
src/lisp/ao_lisp_atom.c
src/lisp/ao_lisp_builtin.c
src/lisp/ao_lisp_cons.c
src/lisp/ao_lisp_eval.c
src/lisp/ao_lisp_frame.c [new file with mode: 0644]
src/lisp/ao_lisp_make_const.c
src/lisp/ao_lisp_mem.c
src/lisp/ao_lisp_prim.c
src/lisp/ao_lisp_read.c
src/nucleao-32/Makefile
src/test/Makefile
src/test/ao_lisp_test.c