1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-27 21:40:34 +02:00

dfg: variable-free-in?, add variable-bound-in?

* module/language/cps/dfg.scm (variable-free-in?): Rename from
  variable-used-in?, to match CWCC language.
  (variable-bound-in?): New interface.

* module/language/cps/contification.scm (contify): Adapt caller.  Add
  more comments.
This commit is contained in:
Andy Wingo 2013-10-04 10:47:55 +02:00
parent b43e81dc60
commit d51fb1e67b
2 changed files with 18 additions and 4 deletions

View file

@ -54,7 +54,8 @@
find-defining-expression
find-constant-value
lift-definition!
variable-used-in?
variable-bound-in?
variable-free-in?
constant-needs-allocation?
dead-after-def?
dead-after-use?
@ -341,11 +342,18 @@
(lp body))
(_ #t))))))))
(define (variable-used-in? var parent-k dfg)
(define (variable-bound-in? var k dfg)
(match dfg
(($ $dfg conts use-maps uplinks)
(match (lookup-use-map k use-maps)
(($ $use-map sym def uses)
(continuation-scope-contains? def k uplinks))))))
(define (variable-free-in? var k dfg)
(match dfg
(($ $dfg conts use-maps uplinks)
(or-map (lambda (use)
(continuation-scope-contains? parent-k use uplinks))
(continuation-scope-contains? k use uplinks))
(match (lookup-use-map var use-maps)
(($ $use-map sym def uses)
uses))))))