summaryrefslogtreecommitdiff
path: root/libguile/memoize.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-12-07 15:52:34 +0100
committerAndy Wingo <wingo@pobox.com>2014-12-07 15:52:34 +0100
commite6a42e676528bf56c6535a7e0c79e936a6d2a818 (patch)
tree82802288051ec1941785bd49bbbbac18e57db6c1 /libguile/memoize.h
parenta3cae847d0e6c77494c7cf5f395e8234e3b9b5cf (diff)
downloadguile-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.h10
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);