diff --git a/cyclone.scm b/cyclone.scm index 011d76a1..08fb0711 100644 --- a/cyclone.scm +++ b/cyclone.scm @@ -433,21 +433,28 @@ (trace:info "---------------- after CPS:") (trace:info (ast:ast->pp-sexp input-program)) + (define + *cps-opt-options* + (list + (cons 'module-globals module-globals) + ;(cons) + )) + (when (> *optimization-level* 0) (set! input-program - (optimize-cps input-program)) + (optimize-cps input-program *cps-opt-options*)) (report:elapsed "---------------- after cps optimizations (1):") (trace:info "---------------- after cps optimizations (1):") (trace:info (ast:ast->pp-sexp input-program)) (set! input-program - (optimize-cps input-program)) + (optimize-cps input-program *cps-opt-options*)) (report:elapsed "---------------- after cps optimizations (2):") (trace:info "---------------- after cps optimizations (2):") (trace:info (ast:ast->pp-sexp input-program)) (set! input-program - (optimize-cps input-program)) + (optimize-cps input-program *cps-opt-options*)) (report:elapsed "---------------- after cps optimizations (3):") (trace:info "---------------- after cps optimizations (3):") (trace:info (ast:ast->pp-sexp input-program)) diff --git a/scheme/cyclone/cps-opt-memoize-pure-fncs.scm b/scheme/cyclone/cps-opt-memoize-pure-fncs.scm index 47319f4c..c070939c 100644 --- a/scheme/cyclone/cps-opt-memoize-pure-fncs.scm +++ b/scheme/cyclone/cps-opt-memoize-pure-fncs.scm @@ -28,7 +28,7 @@ (define (memoizable? var body) (define cont #f) (define (scan exp return locals) - ;(trace:error `(DEBUG scan ,(ast:ast->pp-sexp exp))) + (trace:error `(DEBUG scan ,(ast:ast->pp-sexp exp))) ;(write `(DEBUG scan ,var ,cont ,(ast:ast->pp-sexp exp))) (newline) (cond ;; TODO: reject if a lambda is returned @@ -163,6 +163,10 @@ (let ((new-exp (scan sexp))) (cond ((not (null? memo-tbl)) + (when (pair? module-globals) + (set-cdr! + module-globals + (append (cdr module-globals) (map cdr memo-tbl)))) (append (map (lambda (var/new-var) @@ -207,7 +211,6 @@ (lambda (k$41 x$5$21 y$6$22) (k$41 (Cyc-fast-plus x$5$21 y$6$22)))) - (define mfnc #f) (define ack (lambda (k$46 m$7$23 n$8$24)