From 1325701f829f0d04c2550e57ee4e28ee01c55f83 Mon Sep 17 00:00:00 2001 From: Blake Johnson Date: Thu, 15 Jul 2010 15:35:54 -0600 Subject: [PATCH] handling top-level-renames and mark-barriers (cherry picked from commit 8df94dd746b2a3b08e21f1a07730165294dc6821) original commit: 06c829d8c0e482abd1fbb534a9999c1f21aa1ac0 --- collects/compiler/zo-marshal.rkt | 4 ++++ collects/compiler/zo-parse.rkt | 4 ++-- collects/compiler/zo-structs.rkt | 9 ++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/collects/compiler/zo-marshal.rkt b/collects/compiler/zo-marshal.rkt index 0ff5989dfb..8333ef8c23 100644 --- a/collects/compiler/zo-marshal.rkt +++ b/collects/compiler/zo-marshal.rkt @@ -609,6 +609,10 @@ (vector-set! vec (+ 2 i) k) (vector-set! vec (+ 2 i len) v)) vec] + [(struct top-level-rename (flag)) + flag] + [(struct mark-barrier (value)) + value] [(struct prune (syms)) (box syms)] [(struct wrap-mark (val)) diff --git a/collects/compiler/zo-parse.rkt b/collects/compiler/zo-parse.rkt index 46ad7d584f..7c1186ed64 100644 --- a/collects/compiler/zo-parse.rkt +++ b/collects/compiler/zo-parse.rkt @@ -624,9 +624,9 @@ (and plus-kern? 'plus-kern)))] [else (error "bad module rename: ~e" a)]))] [(boolean? a) - `(#%top-level-rename ,a)] + (make-top-level-rename a)] [(symbol? a) - '(#%mark-barrier)] + (make-mark-barrier a)] [(box? a) (match (unbox a) [(list (? symbol?) ...) (make-prune (unbox a))] diff --git a/collects/compiler/zo-structs.rkt b/collects/compiler/zo-structs.rkt index 7c3e317bd4..daba19df57 100644 --- a/collects/compiler/zo-structs.rkt +++ b/collects/compiler/zo-structs.rkt @@ -23,6 +23,7 @@ (define-syntax-rule (define-form-struct* id id+par ([field-id field-contract] ...)) (begin (define-struct id+par (field-id ...) #:prefab) + #;(provide (struct-out id)) (provide/contract [struct id ([field-id field-contract] ...)]))) @@ -147,7 +148,7 @@ (define-form-struct (primval expr) ([id exact-nonnegative-integer?])) ; direct preference to a kernel primitive ;; Top-level `require' -(define-form-struct (req form) ([reqs syntax?] [dummy toplevel?])) +(define-form-struct (req form) ([reqs stx?] [dummy toplevel?])) (define-form-struct (lexical-rename wrap) ([bool1 boolean?] ; this needs a name [bool2 boolean?] ; this needs a name @@ -194,6 +195,12 @@ [mark-renames any/c] [plus-kern? boolean?])) +; XXX better name for 'flag' +(define-form-struct (top-level-rename wrap) ([flag boolean?])) + +; XXX better name for 'value' +(define-form-struct (mark-barrier wrap) ([value symbol?])) + (provide/contract (struct indirect ([v (or/c closure? #f)])))