separate boot expansion from memoization

* libguile/Makefile.am:
* libguile/init.c:
* libguile/expand.c:
* libguile/expand.h: Add new expander. The idea is that macroexpansion
  is one thing, and whether to compile or interpret the result of that
  is another thing.

* libguile/memoize.c: Adapt to expand as necessary, and then memoize
  expanded source without worrying about syntax errors.

* module/ice-9/eval.scm (make-general-closure): Allow alt clauses to not
  possess the full make-general-closure arity.
This commit is contained in:
Andy Wingo 2010-05-19 22:51:31 +02:00
commit dc3e203e07
7 changed files with 1862 additions and 1102 deletions

View file

@ -127,6 +127,7 @@ libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES = \
error.c \
eval.c \
evalext.c \
expand.c \
extensions.c \
feature.c \
fluids.c \
@ -229,6 +230,7 @@ DOT_X_FILES = \
error.x \
eval.x \
evalext.x \
expand.x \
extensions.x \
feature.x \
fluids.x \
@ -328,6 +330,7 @@ DOT_DOC_FILES = \
error.doc \
eval.doc \
evalext.doc \
expand.doc \
extensions.doc \
feature.doc \
fluids.doc \
@ -487,6 +490,7 @@ modinclude_HEADERS = \
error.h \
eval.h \
evalext.h \
expand.h \
extensions.h \
feature.h \
filesys.h \