diff options
author | Andy Wingo <wingo@pobox.com> | 2019-08-16 09:08:43 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-08-18 22:27:12 +0200 |
commit | 79a40cf717e62f45232979d1952f748ca42f8e8f (patch) | |
tree | d315f7a4796d7061aa48870ea01b72b878ea527c /libguile/expand.h | |
parent | 4bb5834d754aac50ba3288b232ea49f22cf21d0e (diff) | |
download | guile-79a40cf717e62f45232979d1952f748ca42f8e8f.tar.gz |
Add "mod" field to tree-il toplevel ref, set, define
Add "mod" field to <toplevel-ref>, <toplevel-set>, and
<toplevel-define>, indicating the expander's idea of what the current
module is when a toplevel variable is accessed or created. This will
help in later optimizations.
* libguile/expand.c (TOPLEVEL_REF, TOPLEVEL_SET, TOPLEVEL_DEFINE)
(expand, expand_define, expand_set_x, convert_assignment):
* libguile/expand.h (SCM_EXPANDED_TOPLEVEL_REF_FIELD_NAMES):
(SCM_MAKE_EXPANDED_TOPLEVEL_REF, SCM_EXPANDED_TOPLEVEL_SET_FIELD_NAMES):
(SCM_MAKE_EXPANDED_TOPLEVEL_SET, SCM_EXPANDED_TOPLEVEL_DEFINE_FIELD_NAMES):
(SCM_MAKE_EXPANDED_TOPLEVEL_DEFINE):
* module/ice-9/compile-psyntax.scm (translate-literal-syntax-objects):
* module/ice-9/psyntax-pp.scm:
* module/ice-9/psyntax.scm:
* module/language/tree-il.scm:
* module/language/tree-il.scm (parse-tree-il, make-tree-il-folder):
(pre-post-order):
* module/language/tree-il/analyze.scm (goops-toplevel-definition):
(macro-use-before-definition-analysis, proc-ref?, format-analysis):
* module/language/tree-il/compile-cps.scm (convert):
* module/language/tree-il/debug.scm (verify-tree-il):
* module/language/tree-il/effects.scm (make-effects-analyzer):
* module/language/tree-il/fix-letrec.scm (free-variables):
* module/language/tree-il/peval.scm (peval):
* test-suite/tests/tree-il.test: Adapt uses.
Diffstat (limited to 'libguile/expand.h')
-rw-r--r-- | libguile/expand.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libguile/expand.h b/libguile/expand.h index 86054a5f4..06abd9fbb 100644 --- a/libguile/expand.h +++ b/libguile/expand.h @@ -175,41 +175,44 @@ enum #define SCM_EXPANDED_TOPLEVEL_REF_TYPE_NAME "toplevel-ref" #define SCM_EXPANDED_TOPLEVEL_REF_FIELD_NAMES \ - { "src", "name", } + { "src", "mod", "name", } enum { SCM_EXPANDED_TOPLEVEL_REF_SRC, + SCM_EXPANDED_TOPLEVEL_REF_MOD, SCM_EXPANDED_TOPLEVEL_REF_NAME, SCM_NUM_EXPANDED_TOPLEVEL_REF_FIELDS, }; -#define SCM_MAKE_EXPANDED_TOPLEVEL_REF(src, name) \ - scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_REF], 0, SCM_NUM_EXPANDED_TOPLEVEL_REF_FIELDS, SCM_UNPACK (src), SCM_UNPACK (name)) +#define SCM_MAKE_EXPANDED_TOPLEVEL_REF(src, mod, name) \ + scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_REF], 0, SCM_NUM_EXPANDED_TOPLEVEL_REF_FIELDS, SCM_UNPACK (src), SCM_UNPACK (mod), SCM_UNPACK (name)) #define SCM_EXPANDED_TOPLEVEL_SET_TYPE_NAME "toplevel-set" #define SCM_EXPANDED_TOPLEVEL_SET_FIELD_NAMES \ - { "src", "name", "exp", } + { "src", "mod", "name", "exp", } enum { SCM_EXPANDED_TOPLEVEL_SET_SRC, + SCM_EXPANDED_TOPLEVEL_SET_MOD, SCM_EXPANDED_TOPLEVEL_SET_NAME, SCM_EXPANDED_TOPLEVEL_SET_EXP, SCM_NUM_EXPANDED_TOPLEVEL_SET_FIELDS, }; -#define SCM_MAKE_EXPANDED_TOPLEVEL_SET(src, name, exp) \ - scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_SET], 0, SCM_NUM_EXPANDED_TOPLEVEL_SET_FIELDS, SCM_UNPACK (src), SCM_UNPACK (name), SCM_UNPACK (exp)) +#define SCM_MAKE_EXPANDED_TOPLEVEL_SET(src, mod, name, exp) \ + scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_SET], 0, SCM_NUM_EXPANDED_TOPLEVEL_SET_FIELDS, SCM_UNPACK (src), SCM_UNPACK (mod), SCM_UNPACK (name), SCM_UNPACK (exp)) #define SCM_EXPANDED_TOPLEVEL_DEFINE_TYPE_NAME "toplevel-define" #define SCM_EXPANDED_TOPLEVEL_DEFINE_FIELD_NAMES \ - { "src", "name", "exp", } + { "src", "mod", "name", "exp", } enum { SCM_EXPANDED_TOPLEVEL_DEFINE_SRC, + SCM_EXPANDED_TOPLEVEL_DEFINE_MOD, SCM_EXPANDED_TOPLEVEL_DEFINE_NAME, SCM_EXPANDED_TOPLEVEL_DEFINE_EXP, SCM_NUM_EXPANDED_TOPLEVEL_DEFINE_FIELDS, }; -#define SCM_MAKE_EXPANDED_TOPLEVEL_DEFINE(src, name, exp) \ - scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_DEFINE], 0, SCM_NUM_EXPANDED_TOPLEVEL_DEFINE_FIELDS, SCM_UNPACK (src), SCM_UNPACK (name), SCM_UNPACK (exp)) +#define SCM_MAKE_EXPANDED_TOPLEVEL_DEFINE(src, mod, name, exp) \ + scm_c_make_struct (exp_vtables[SCM_EXPANDED_TOPLEVEL_DEFINE], 0, SCM_NUM_EXPANDED_TOPLEVEL_DEFINE_FIELDS, SCM_UNPACK (src), SCM_UNPACK (mod), SCM_UNPACK (name), SCM_UNPACK (exp)) #define SCM_EXPANDED_CONDITIONAL_TYPE_NAME "conditional" #define SCM_EXPANDED_CONDITIONAL_FIELD_NAMES \ |