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>
Mon, 20 Feb 2017 19:16:49 +0000 (11:16 -0800)
commit11cb03b1d336ee90c422be27588f57be573a9546
tree944a9c36379c02383081fd3246395158f662ce7b
parent9e1a787f8828fb7b750ad3310c89a89536ea5286
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