From 030e9b76036beeffff845619875124400f33ef5b Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 15 Jul 2015 16:44:49 +0200 Subject: [PATCH] Enable CPS2 closure conversion * module/language/cps2/closure-conversion.scm: Remove debug printfs. * module/language/cps2/compile-cps.scm (compile-cps): * module/language/cps/compile-bytecode.scm (compile-bytecode): Use CPS2 closure conversion by default. --- module/language/cps/compile-bytecode.scm | 2 +- module/language/cps2/closure-conversion.scm | 3 --- module/language/cps2/compile-cps.scm | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/module/language/cps/compile-bytecode.scm b/module/language/cps/compile-bytecode.scm index b66b1a693..cc696a92f 100644 --- a/module/language/cps/compile-bytecode.scm +++ b/module/language/cps/compile-bytecode.scm @@ -517,7 +517,7 @@ ;; ;; (set! exp (optimize exp opts)) - (set! exp (if (not (kw-arg-ref opts #:cps2-convert? #f)) + (set! exp (if (not (kw-arg-ref opts #:cps2-convert? #t)) (convert-closures exp) exp)) ;; first-order optimization should go here diff --git a/module/language/cps2/closure-conversion.scm b/module/language/cps2/closure-conversion.scm index 0ae1bf341..9e3a099ce 100644 --- a/module/language/cps2/closure-conversion.scm +++ b/module/language/cps2/closure-conversion.scm @@ -201,7 +201,6 @@ the bound vars of the closure." ((eq? empty-intset unknown-kfuns) ;; All functions are well-known; we can share a closure. Use ;; the first bound variable. - (pk 'all-well-known kfuns) (let ((closure (car vars))) (intset-fold (lambda (kfun out) (intmap-add out kfun closure)) @@ -211,7 +210,6 @@ the bound vars of the closure." ;; Only one function is not-well-known. Use that ;; function's closure as the shared closure. (let ((closure (assq-ref (map cons kfuns vars) unknown-kfun))) - (pk 'one-not-well-known kfuns closure) (intset-fold (lambda (kfun out) (intmap-add out kfun closure)) kfuns-set out)))) @@ -789,7 +787,6 @@ bound to @var{var}, and continue to @var{k}." ($continue k src ($prompt escape? tag handler))))))))) - (pk 'convert-one label body free self-known?) (intset-fold (lambda (label cps) (match (intmap-ref cps label (lambda (_) #f)) (($ $kargs names vars term) diff --git a/module/language/cps2/compile-cps.scm b/module/language/cps2/compile-cps.scm index da51d3536..4c0947be5 100644 --- a/module/language/cps2/compile-cps.scm +++ b/module/language/cps2/compile-cps.scm @@ -118,6 +118,6 @@ (define (compile-cps exp env opts) (let ((exp (optimize-higher-order-cps exp opts))) - (if (kw-arg-ref opts #:cps2-convert? #f) + (if (kw-arg-ref opts #:cps2-convert? #t) (values (conts->fun* (renumber (convert-closures exp))) env env) (values (conts->fun (renumber exp)) env env))))