diff --git a/collects/typed-scheme/optimizer/optimizer.rkt b/collects/typed-scheme/optimizer/optimizer.rkt index eb07adcd..3e7b9e73 100644 --- a/collects/typed-scheme/optimizer/optimizer.rkt +++ b/collects/typed-scheme/optimizer/optimizer.rkt @@ -2,6 +2,7 @@ (require syntax/parse syntax/id-table racket/dict + racket/pretty (for-template scheme/base scheme/flonum scheme/fixnum scheme/unsafe/ops racket/private/for) @@ -91,7 +92,10 @@ #:with e*:opt-expr #'e #'e*.opt] [e:expr #'e])]) - ((optimize) stx)) + (let ((result ((optimize) stx))) + (when *show-optimized-code* + (pretty-print (syntax->datum result))) + result)) (when (and *log-optimizations?* *log-optimizatons-to-log-file?*) (close-output-port port))))) diff --git a/collects/typed-scheme/optimizer/utils.rkt b/collects/typed-scheme/optimizer/utils.rkt index 088f0fd0..dfe0b200 100644 --- a/collects/typed-scheme/optimizer/utils.rkt +++ b/collects/typed-scheme/optimizer/utils.rkt @@ -7,7 +7,8 @@ (types abbrev type-table utils subtype) (rep type-rep)) -(provide log-optimization *log-optimizations?* *log-optimizatons-to-log-file?* *optimization-log-file* +(provide log-optimization *log-optimizations?* *log-optimizatons-to-log-file?* + *optimization-log-file* *show-optimized-code* subtypeof? isoftype? mk-unsafe-tbl n-ary->binary @@ -25,6 +26,8 @@ (syntax->datum stx) kind) #t)) +;; if set to #t, the optimizer will dump its result to stdout before compilation +(define *show-optimized-code* #f) ;; is the syntax object s's type a subtype of t? (define (subtypeof? s t)