diff options
author | Andy Wingo <wingo@pobox.com> | 2014-12-07 15:52:34 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-12-07 15:52:34 +0100 |
commit | e6a42e676528bf56c6535a7e0c79e936a6d2a818 (patch) | |
tree | 82802288051ec1941785bd49bbbbac18e57db6c1 /libguile/memoize.h | |
parent | a3cae847d0e6c77494c7cf5f395e8234e3b9b5cf (diff) | |
download | guile-e6a42e676528bf56c6535a7e0c79e936a6d2a818.tar.gz |
Simplify variable resolution in the evaluator
* libguile/expand.c (convert_assignment): Handle creation of the default
lambda-case body here.
* libguile/eval.c (eval):
* module/ice-9/eval.scm (primitive-eval):
* libguile/memoize.h:
* libguile/memoize.c (MAKMEMO_BOX_REF, MAKMEMO_BOX_SET):
(MAKMEMO_TOP_BOX, MAKMEMO_MOD_BOX): Refactor all global var resolution
to go through "resolve". Add "box-ref" and "box-set!". Rename
memoize-variable-access! to %resolve-variable, and don't be
destructive.
Diffstat (limited to 'libguile/memoize.h')
-rw-r--r-- | libguile/memoize.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/libguile/memoize.h b/libguile/memoize.h index f0dab5797..23c030674 100644 --- a/libguile/memoize.h +++ b/libguile/memoize.h @@ -69,7 +69,6 @@ enum SCM_M_CAPTURE_ENV, SCM_M_LET, SCM_M_QUOTE, - SCM_M_DEFINE, SCM_M_CAPTURE_MODULE, SCM_M_APPLY, SCM_M_CONT, @@ -77,10 +76,9 @@ enum SCM_M_CALL, SCM_M_LEXICAL_REF, SCM_M_LEXICAL_SET, - SCM_M_TOPLEVEL_REF, - SCM_M_TOPLEVEL_SET, - SCM_M_MODULE_REF, - SCM_M_MODULE_SET, + SCM_M_BOX_REF, + SCM_M_BOX_SET, + SCM_M_RESOLVE, SCM_M_CALL_WITH_PROMPT }; @@ -90,7 +88,7 @@ enum SCM_INTERNAL SCM scm_memoize_expression (SCM exp); SCM_INTERNAL SCM scm_unmemoize_expression (SCM memoized); SCM_INTERNAL SCM scm_memoized_typecode (SCM sym); -SCM_INTERNAL SCM scm_memoize_variable_access_x (SCM memoized, SCM module); +SCM_INTERNAL SCM scm_sys_resolve_variable (SCM loc, SCM module); SCM_INTERNAL void scm_init_memoize (void); |