diff options
author | Andy Wingo <wingo@pobox.com> | 2020-05-08 16:47:07 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2020-05-08 17:07:56 +0200 |
commit | 4311dc9858ba7c6db50a851e95fc7c387b9381b2 (patch) | |
tree | 6ad4eaa887b09aadea70c0664eb5ddf66becb136 /module/language/cps/compile-bytecode.scm | |
parent | e9c0f3071dedb0f6b39757e920cdc182435c8725 (diff) | |
download | guile-4311dc9858ba7c6db50a851e95fc7c387b9381b2.tar.gz |
Define new "lowering" phase in compiler
* module/language/cps/compile-bytecode.scm (compile-bytecode):
* module/language/tree-il/compile-bytecode.scm (compile-bytecode):
* module/language/tree-il/compile-cps.scm (compile-cps): Rely on
compiler to lower incoming term already.
* module/language/tree-il/optimize.scm (make-lowerer): New procedure.
* module/system/base/compile.scm (compute-lowerer): New procedure,
replaceing add-default-optimizations.
(compute-compiler): Lower before running compiler.
* module/system/base/language.scm (<language>): Change
optimizations-for-level field to "lowerer".
* module/scripts/compile.scm (%options, compile): Parse -O0, -O1 and so
on to #:optimization-level instead of expanding to all the
optimization flags.
* module/language/cps/optimize.scm (lower-cps): Move here from
compile-bytecode.scm.
(make-cps-lowerer): New function.
* module/language/cps/spec.scm (cps): Declare lowerer.
Diffstat (limited to 'module/language/cps/compile-bytecode.scm')
-rw-r--r-- | module/language/cps/compile-bytecode.scm | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/module/language/cps/compile-bytecode.scm b/module/language/cps/compile-bytecode.scm index 6e7dab8ef..48e6ba1fa 100644 --- a/module/language/cps/compile-bytecode.scm +++ b/module/language/cps/compile-bytecode.scm @@ -29,12 +29,6 @@ #:use-module (language cps) #:use-module (language cps slot-allocation) #:use-module (language cps utils) - #:use-module (language cps closure-conversion) - #:use-module (language cps loop-instrumentation) - #:use-module (language cps optimize) - #:use-module (language cps reify-primitives) - #:use-module (language cps renumber) - #:use-module (language cps split-rec) #:use-module (language cps intmap) #:use-module (language cps intset) #:use-module (system vm assembler) @@ -680,7 +674,7 @@ (intmap-for-each compile-cont cps))) -(define (emit-bytecode exp env opts) +(define (compile-bytecode exp env opts) (let ((asm (make-assembler))) (intmap-for-each (lambda (kfun body) (compile-function (intmap-select exp body) asm opts)) @@ -688,20 +682,3 @@ (values (link-assembly asm #:page-aligned? (kw-arg-ref opts #:to-file? #f)) env env))) - -(define (lower-cps exp opts) - ;; FIXME: For now the closure conversion pass relies on $rec instances - ;; being separated into SCCs. We should fix this to not be the case, - ;; and instead move the split-rec pass back to - ;; optimize-higher-order-cps. - (set! exp (split-rec exp)) - (set! exp (optimize-higher-order-cps exp opts)) - (set! exp (convert-closures exp)) - (set! exp (optimize-first-order-cps exp opts)) - (set! exp (reify-primitives exp)) - (set! exp (add-loop-instrumentation exp)) - (renumber exp)) - -(define (compile-bytecode exp env opts) - (set! exp (lower-cps exp opts)) - (emit-bytecode exp env opts)) |