From: Andy Wingo Date: Sun, 24 Nov 2013 12:59:18 +0000 (+0100) Subject: Compute-contification also visits body X-Git-Url: http://git.hcoop.net/bpt/guile.git/commitdiff_plain/7338a49fa19311adc0eb00d6752235d6af8b3751 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. --- 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)))))