summaryrefslogtreecommitdiff
path: root/module/language/cps/compile-bytecode.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2020-05-08 16:47:07 +0200
committerAndy Wingo <wingo@pobox.com>2020-05-08 17:07:56 +0200
commit4311dc9858ba7c6db50a851e95fc7c387b9381b2 (patch)
tree6ad4eaa887b09aadea70c0664eb5ddf66becb136 /module/language/cps/compile-bytecode.scm
parente9c0f3071dedb0f6b39757e920cdc182435c8725 (diff)
downloadguile-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.scm25
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))