From 7b32c83cbd5b3542864c888a7957b497f969f3b9 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 24 Jul 2012 07:07:38 -0500 Subject: [PATCH] normalize module rename info to vector in ".zo" format This is related to the receent repairs for submodules and `variable-reference->namespace'. Merge to v5.3 (cherry picked from commit 5a1bc5ad4001b1ac0203aee3852d8a5694b818d1) --- collects/compiler/zo-structs.rkt | 2 +- collects/scribblings/raco/zo-struct.scrbl | 2 +- src/racket/src/marshal.c | 12 ++++++------ src/racket/src/module.c | 5 ++++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/collects/compiler/zo-structs.rkt b/collects/compiler/zo-structs.rkt index d16b9fbd66..1065cf265c 100644 --- a/collects/compiler/zo-structs.rkt +++ b/collects/compiler/zo-structs.rkt @@ -124,7 +124,7 @@ [max-let-depth exact-nonnegative-integer?] [dummy toplevel?] [lang-info (or/c #f (vector/c module-path? symbol? any/c))] - [internal-context (or/c #f #t stx? (listof stx?))] + [internal-context (or/c #f #t stx? (vectorof stx?))] [pre-submodules (listof mod?)] [post-submodules (listof mod?)])) diff --git a/collects/scribblings/raco/zo-struct.scrbl b/collects/scribblings/raco/zo-struct.scrbl index 330fdd7438..d6355a72c2 100644 --- a/collects/scribblings/raco/zo-struct.scrbl +++ b/collects/scribblings/raco/zo-struct.scrbl @@ -173,7 +173,7 @@ structures that are produced by @racket[zo-parse] and consumed by [max-let-depth exact-nonnegative-integer?] [dummy toplevel?] [lang-info (or/c #f (vector/c module-path? symbol? any/c))] - [internal-context (or/c #f #t stx? (listof stx?))] + [internal-context (or/c #f #t stx? (vectorof stx?))] [pre-submodules (listof mod?)] [post-submodules (listof mod?)])]{ Represents a @racket[module] declaration. diff --git a/src/racket/src/marshal.c b/src/racket/src/marshal.c index c7c2faac19..4b6b2a5734 100644 --- a/src/racket/src/marshal.c +++ b/src/racket/src/marshal.c @@ -1173,11 +1173,6 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) return (Scheme_Object *)rp; } -XFORM_NONGCING static Scheme_Object *wrap_mod_stx(Scheme_Object *stx) -{ - return (stx ? stx : scheme_false); -} - static Scheme_Object *write_module(Scheme_Object *obj) { Scheme_Module *m = (Scheme_Module *)obj; @@ -1323,7 +1318,12 @@ static Scheme_Object *write_module(Scheme_Object *obj) l = cons(scheme_make_integer(m->max_let_depth), l); - l = cons(wrap_mod_stx(m->rn_stx), l); + v = m->rn_stx; + if (!v) + v = scheme_false; + else if (SCHEME_PAIRP(v)) + v = scheme_list_to_vector(v); + l = cons(v, l); /* previously recorded "functional?" info: */ l = cons(scheme_false, l); diff --git a/src/racket/src/module.c b/src/racket/src/module.c index 8f02fd1873..d055775e98 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -6196,7 +6196,10 @@ static Scheme_Object *do_module_execute(Scheme_Object *data, Scheme_Env *genv, if (m->rn_stx && !SAME_OBJ(scheme_true, m->rn_stx)) { /* Delay the shift: */ Scheme_Object *v; - v = scheme_make_pair(m->rn_stx, (Scheme_Object *)midx); + v = m->rn_stx; + if (SCHEME_PAIRP(v)) + v = scheme_list_to_vector(v); + v = scheme_make_pair(v, (Scheme_Object *)midx); m->rn_stx = v; } }