From 79a40cf717e62f45232979d1952f748ca42f8e8f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 16 Aug 2019 09:08:43 +0200 Subject: Add "mod" field to tree-il toplevel ref, set, define Add "mod" field to , , and , 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. --- libguile/expand.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'libguile/expand.h') 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 \ -- cgit v1.2.3