diff options
author | Andy Wingo <wingo@pobox.com> | 2013-06-27 19:28:42 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-06-27 22:02:43 +0200 |
commit | 86d0eb31df4b1a28df74ff3d91de66223291e351 (patch) | |
tree | 0cc3b858aab25f7c7071e54d00ffe2f5c635f68f | |
parent | bb97e4abd49e8094e9eb8bf767c696bf7ee1ba7e (diff) | |
download | guile-86d0eb31df4b1a28df74ff3d91de66223291e351.tar.gz |
replace <dynref> with primcalls to fluid-ref
* doc/ref/compiler.texi (Tree-IL): Remove mention of <dynref>.
* module/language/scheme/decompile-tree-il.scm (do-decompile):
(choose-output-names): Remove dynref.
* module/language/tree-il.scm (<tree-il>, parse-tree-il):
(unparse-tree-il, make-tree-il-folder, pre-post-order): Remove
<dynref>.
* module/language/tree-il/analyze.scm (analyze-lexicals):
* module/language/tree-il/compile-glil.scm (*primcall-ops*): Add
fluid-ref.
(flatten-lambda-case): Remove <dynref> case.
* module/language/tree-il/cse.scm (cse):
* module/language/tree-il/debug.scm (verify-tree-il): Remove <dynref>
cases.
* module/language/tree-il/effects.scm (make-effects-analyzer): Remove
<dynref> case. Add a primcall fluid-ref case.
* module/language/tree-il/peval.scm (peval): Remove dynref cases.
* module/language/tree-il/primitives.scm (*primitive-expand-table*):
Remove fluid-ref -> dynref transformation.
-rw-r--r-- | doc/ref/compiler.texi | 5 | ||||
-rw-r--r-- | module/language/scheme/decompile-tree-il.scm | 4 | ||||
-rw-r--r-- | module/language/tree-il.scm | 13 | ||||
-rw-r--r-- | module/language/tree-il/analyze.scm | 6 | ||||
-rw-r--r-- | module/language/tree-il/compile-glil.scm | 10 | ||||
-rw-r--r-- | module/language/tree-il/cse.scm | 4 | ||||
-rw-r--r-- | module/language/tree-il/debug.scm | 2 | ||||
-rw-r--r-- | module/language/tree-il/effects.scm | 7 | ||||
-rw-r--r-- | module/language/tree-il/peval.scm | 3 | ||||
-rw-r--r-- | module/language/tree-il/primitives.scm | 6 |
10 files changed, 4 insertions, 56 deletions
diff --git a/doc/ref/compiler.texi b/doc/ref/compiler.texi index baba6cbca..761ce17e9 100644 --- a/doc/ref/compiler.texi +++ b/doc/ref/compiler.texi @@ -466,11 +466,6 @@ evaluate to fluids, and @var{vals} a corresponding list of expressions to bind to the fluids during the dynamic extent of the evaluation of @var{body}. @end deftp -@deftp {Scheme Variable} <dynref> fluid -@deftpx {External Representation} (dynref @var{fluid}) -A dynamic variable reference. @var{fluid} should be a Tree-IL -expression evaluating to a fluid. -@end deftp @deftp {Scheme Variable} <dynset> fluid exp @deftpx {External Representation} (dynset @var{fluid} @var{exp}) A dynamic variable set. @var{fluid}, a Tree-IL expression evaluating diff --git a/module/language/scheme/decompile-tree-il.scm b/module/language/scheme/decompile-tree-il.scm index b265b936c..928ddb3d3 100644 --- a/module/language/scheme/decompile-tree-il.scm +++ b/module/language/scheme/decompile-tree-il.scm @@ -438,9 +438,6 @@ (map recurse vals)) ,@(recurse-body body))) - ((<dynref> fluid) - `(fluid-ref ,(recurse fluid))) - ((<dynset> fluid exp) `(fluid-set! ,(recurse fluid) ,(recurse exp))) @@ -762,7 +759,6 @@ (for-each recurse vals) (recurse body)) - ((<dynref> fluid) (primitive 'fluid-ref) (recurse fluid)) ((<dynset> fluid exp) (primitive 'fluid-set!) (recurse fluid) (recurse exp)) diff --git a/module/language/tree-il.scm b/module/language/tree-il.scm index 633bb6dcd..989db28fa 100644 --- a/module/language/tree-il.scm +++ b/module/language/tree-il.scm @@ -47,7 +47,6 @@ <fix> fix? make-fix fix-src fix-names fix-gensyms fix-vals fix-body <let-values> let-values? make-let-values let-values-src let-values-exp let-values-body <dynlet> dynlet? make-dynlet dynlet-src dynlet-fluids dynlet-vals dynlet-body - <dynref> dynref? make-dynref dynref-src dynref-fluid <dynset> dynset? make-dynset dynset-src dynset-fluid dynset-exp <prompt> prompt? make-prompt prompt-src prompt-tag prompt-body prompt-handler <abort> abort? make-abort abort-src abort-tag abort-args abort-tail @@ -135,7 +134,6 @@ (define-type (<tree-il> #:common-slots (src) #:printer print-tree-il) (<fix> names gensyms vals body) (<let-values> exp body) - (<dynref> fluid) (<dynset> fluid exp) (<prompt> tag body handler) (<abort> tag args tail)) @@ -250,9 +248,6 @@ (('dynlet fluids vals body) (make-dynlet loc (map retrans fluids) (map retrans vals) (retrans body))) - (('dynref fluid) - (make-dynref loc (retrans fluid))) - (('dynset fluid exp) (make-dynset loc (retrans fluid) (retrans exp))) @@ -338,9 +333,6 @@ `(dynlet ,(map unparse-tree-il fluids) ,(map unparse-tree-il vals) ,(unparse-tree-il body))) - (($ <dynref> src fluid) - `(dynref ,(unparse-tree-il fluid))) - (($ <dynset> src fluid exp) `(dynset ,(unparse-tree-il fluid) ,(unparse-tree-il exp))) @@ -418,8 +410,6 @@ (let*-values (((seed ...) (fold-values foldts fluids seed ...)) ((seed ...) (fold-values foldts vals seed ...))) (foldts body seed ...))) - (($ <dynref> src fluid) - (foldts fluid seed ...)) (($ <dynset> src fluid exp) (let*-values (((seed ...) (foldts fluid seed ...))) (foldts exp seed ...))) @@ -516,9 +506,6 @@ This is an implementation of `foldts' as described by Andy Wingo in (($ <dynlet> src fluids vals body) (make-dynlet src (map lp fluids) (map lp vals) (lp body))) - (($ <dynref> src fluid) - (make-dynref src (lp fluid))) - (($ <dynset> src fluid exp) (make-dynset src (lp fluid) (lp exp))) diff --git a/module/language/tree-il/analyze.scm b/module/language/tree-il/analyze.scm index 1fbeb2c65..224f0b751 100644 --- a/module/language/tree-il/analyze.scm +++ b/module/language/tree-il/analyze.scm @@ -340,9 +340,6 @@ ((<dynlet> fluids vals body) (apply lset-union eq? (step body) (map step (append fluids vals)))) - ((<dynref> fluid) - (step fluid)) - ((<dynset> fluid exp) (lset-union eq? (step fluid) (step exp))) @@ -511,9 +508,6 @@ ((<dynlet> fluids vals body) (apply max (recur body) (map recur (append fluids vals)))) - ((<dynref> fluid) - (recur fluid)) - ((<dynset> fluid exp) (max (recur fluid) (recur exp))) diff --git a/module/language/tree-il/compile-glil.scm b/module/language/tree-il/compile-glil.scm index 85b87b067..67ea848ef 100644 --- a/module/language/tree-il/compile-glil.scm +++ b/module/language/tree-il/compile-glil.scm @@ -114,6 +114,7 @@ (list . list) (vector . vector) ((class-of . 1) . class-of) + ((fluid-ref . 1) . fluid-ref) ((@slot-ref . 2) . slot-ref) ((@slot-set! . 3) . slot-set) ((string-length . 1) . string-length) @@ -989,15 +990,6 @@ (if RA (emit-branch #f 'br RA))))) - ((<dynref> src fluid) - (case context - ((drop) - (comp-drop fluid)) - ((push vals tail) - (comp-push fluid) - (emit-code #f (make-glil-call 'fluid-ref 1)))) - (maybe-emit-return)) - ((<dynset> src fluid exp) (comp-push fluid) (comp-push exp) diff --git a/module/language/tree-il/cse.scm b/module/language/tree-il/cse.scm index 31947dd0d..5648e701c 100644 --- a/module/language/tree-il/cse.scm +++ b/module/language/tree-il/cse.scm @@ -449,10 +449,6 @@ env ctx))) (return (make-dynlet src fluids vals body) (concat db*** (concat db** db*))))) - (($ <dynref> src fluid) - (let*-values (((fluid db*) (visit fluid db env 'value))) - (return (make-dynref src fluid) - db*))) (($ <dynset> src fluid exp) (let*-values (((fluid db*) (visit fluid db env 'value)) ((exp db**) (visit exp db env 'value))) diff --git a/module/language/tree-il/debug.scm b/module/language/tree-il/debug.scm index fbc56c6ba..99d70a787 100644 --- a/module/language/tree-il/debug.scm +++ b/module/language/tree-il/debug.scm @@ -216,8 +216,6 @@ (for-each (cut visit <> env) fluids) (for-each (cut visit <> env) vals) (visit body env)))) - (($ <dynref> src fluid) - (visit fluid env)) (($ <dynset> src fluid exp) (visit fluid env) (visit exp env)) diff --git a/module/language/tree-il/effects.scm b/module/language/tree-il/effects.scm index 170c89669..fe6d2c281 100644 --- a/module/language/tree-il/effects.scm +++ b/module/language/tree-il/effects.scm @@ -217,10 +217,6 @@ of an expression." (cause &type-check) (cause &fluid) (compute-effects body))) - (($ <dynref> _ fluid) - (logior (compute-effects fluid) - (cause &type-check) - &fluid)) (($ <dynset> _ fluid exp) (logior (compute-effects fluid) (compute-effects exp) @@ -282,6 +278,9 @@ of an expression." (($ <primcall> _ 'make-prompt-tag (arg)) (logior (compute-effects arg) &allocation)) + (($ <primcall> _ 'fluid-ref (fluid)) + (logior (compute-effects fluid) &fluid)) + ;; Primitives that are normally effect-free, but which might ;; cause type checks, allocate memory, or access mutable ;; memory. FIXME: expand, to be more precise. diff --git a/module/language/tree-il/peval.scm b/module/language/tree-il/peval.scm index afa92f6de..3fc487902 100644 --- a/module/language/tree-il/peval.scm +++ b/module/language/tree-il/peval.scm @@ -515,7 +515,6 @@ top-level bindings from ENV and return the resulting expression." ($ <toplevel-ref>) ($ <module-ref>) ($ <primitive-ref>) - ($ <dynref>) ($ <lexical-set>) ; FIXME: these set! expressions ($ <toplevel-set>) ; could return zero values in ($ <toplevel-define>) ; the future @@ -999,8 +998,6 @@ top-level bindings from ENV and return the resulting expression." (($ <dynlet> src fluids vals body) (make-dynlet src (map for-value fluids) (map for-value vals) (for-tail body))) - (($ <dynref> src fluid) - (make-dynref src (for-value fluid))) (($ <dynset> src fluid exp) (make-dynset src (for-value fluid) (for-value exp))) (($ <toplevel-ref> src (? effect-free-primitive? name)) diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index 7112680fe..5bd352914 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -535,12 +535,6 @@ (hashq-set! *primitive-expand-table* 'equal? maybe-simplify-to-eq) (hashq-set! *primitive-expand-table* - 'fluid-ref - (case-lambda - ((src fluid) (make-dynref src fluid)) - (else #f))) - -(hashq-set! *primitive-expand-table* 'fluid-set! (case-lambda ((src fluid exp) (make-dynset src fluid exp)) |