summaryrefslogtreecommitdiff
path: root/libguile/expand.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2019-08-16 09:08:43 +0200
committerAndy Wingo <wingo@pobox.com>2019-08-18 22:27:12 +0200
commit79a40cf717e62f45232979d1952f748ca42f8e8f (patch)
treed315f7a4796d7061aa48870ea01b72b878ea527c /libguile/expand.h
parent4bb5834d754aac50ba3288b232ea49f22cf21d0e (diff)
downloadguile-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.h21
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 \