summaryrefslogtreecommitdiff
path: root/module/language/cps/utils.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-01-03 17:17:23 +0100
committerAndy Wingo <wingo@pobox.com>2018-01-03 17:32:43 +0100
commitee15ca1455806b04f4785655ec8a2fd9dda6c01c (patch)
tree532b7604609085928a652af8330a333c360ca240 /module/language/cps/utils.scm
parent29fee39c2aafc13245fb5fd48bcf6db195251282 (diff)
downloadguile-ee15ca1455806b04f4785655ec8a2fd9dda6c01c.tar.gz
$prompt is now its own kind of CPS term.
* module/language/cps.scm ($prompt): Rework to be its own term kind. Now $continue always continues to a single continuation. Adapt callers.
Diffstat (limited to 'module/language/cps/utils.scm')
-rw-r--r--module/language/cps/utils.scm24
1 files changed, 9 insertions, 15 deletions
diff --git a/module/language/cps/utils.scm b/module/language/cps/utils.scm
index cc153c2b9..d8e47e12f 100644
--- a/module/language/cps/utils.scm
+++ b/module/language/cps/utils.scm
@@ -200,12 +200,12 @@ disjoint, an error will be signalled."
(visit-cont kbody labels)))
(($ $kargs names syms term)
(match term
- (($ $continue k src ($ $prompt escape? tag handler))
- (visit-cont k (visit-cont handler labels)))
(($ $continue k)
(visit-cont k labels))
(($ $branch kf kt)
- (visit-cont kf (visit-cont kt labels))))))))))))
+ (visit-cont kf (visit-cont kt labels)))
+ (($ $prompt k kh)
+ (visit-cont k (visit-cont kh labels))))))))))))
(define* (compute-reachable-functions conts #:optional (kfun 0))
"Compute a mapping LABEL->LABEL..., where each key is a reachable
@@ -260,11 +260,9 @@ intset."
(match (intmap-ref conts label)
(($ $kargs names vars term)
(match term
- (($ $continue k src exp)
- (match exp
- (($ $prompt escape? tag handler) (propagate2 k handler))
- (_ (propagate1 k))))
- (($ $branch kf kt) (propagate2 kf kt))))
+ (($ $continue k) (propagate1 k))
+ (($ $branch kf kt) (propagate2 kf kt))
+ (($ $prompt k kh) (propagate2 k kh))))
(($ $kreceive arity k)
(propagate1 k))
(($ $kfun src meta self tail clause)
@@ -296,13 +294,9 @@ intset."
(add-pred kbody (if kalt (add-pred kalt preds) preds)))
(($ $kargs names syms term)
(match term
- (($ $continue k src exp)
- (add-pred k
- (match exp
- (($ $prompt _ _ k) (add-pred k preds))
- (_ preds))))
- (($ $branch kf kt)
- (add-pred kf (add-pred kt preds)))))))
+ (($ $continue k) (add-pred k preds))
+ (($ $branch kf kt) (add-pred kf (add-pred kt preds)))
+ (($ $prompt k kh) (add-pred k (add-pred kh preds)))))))
(persistent-intmap
(intset-fold add-preds labels
(intset->intmap (lambda (label) '()) labels))))