diff options
author | Andy Wingo <wingo@pobox.com> | 2013-11-24 13:59:18 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-11-25 20:07:53 +0100 |
commit | 7338a49fa19311adc0eb00d6752235d6af8b3751 (patch) | |
tree | ac1c984e5e1f25e9dcf88151baabdbf9b0efc670 /module | |
parent | 22d425ec551f265a8c700d224c3d0953a98b14bf (diff) | |
download | guile-7338a49fa19311adc0eb00d6752235d6af8b3751.tar.gz |
Compute-contification also visits body
* module/language/cps/contification.scm (compute-contification): If we
decide to contify, don't forget to visit the body. Should make
contification converge faster.
Diffstat (limited to 'module')
-rw-r--r-- | module/language/cps/contification.scm | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/module/language/cps/contification.scm b/module/language/cps/contification.scm index 7a9252e95..d78a4b40d 100644 --- a/module/language/cps/contification.scm +++ b/module/language/cps/contification.scm @@ -219,8 +219,9 @@ (($ $cont _ ($ $kclause arity body)) ...)))) ...) - (unless (contify-funs term-k sym self tail-k arity body) - (for-each visit-fun fun))))))) + (if (contify-funs term-k sym self tail-k arity body) + (for-each (cut for-each visit-cont <>) body) + (for-each visit-fun fun))))))) (visit-term body term-k) (for-each visit-component (split-components (map list names syms funs)))) @@ -234,7 +235,9 @@ (if (and=> (bound-symbol k) (lambda (sym) (contify-fun term-k sym self tail-k arity body))) - (elide-function! k (lookup-cont k cont-table)) + (begin + (elide-function! k (lookup-cont k cont-table)) + (for-each visit-cont body)) (visit-fun exp))) (_ #t))))) |