guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 01/02: Include optimizations when targetting hoot runtim


From: Andy Wingo
Subject: [Guile-commits] 01/02: Include optimizations when targetting hoot runtime
Date: Fri, 23 Jun 2023 03:02:10 -0400 (EDT)

wingo pushed a commit to branch wip-tailify
in repository guile.

commit d2784ea1af341608361f61db9c06ccfd2722b921
Author: Andy Wingo <wingo@pobox.com>
AuthorDate: Thu Jun 22 20:07:17 2023 +0200

    Include optimizations when targetting hoot runtime
    
    * module/language/cps/optimize.scm (optimize-hoot-backend-cps): There
    are a couple optimizations we need to clean up after tailification, so
    include those here.
---
 module/language/cps/optimize.scm | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/module/language/cps/optimize.scm b/module/language/cps/optimize.scm
index dee9b30de..0e544c24e 100644
--- a/module/language/cps/optimize.scm
+++ b/module/language/cps/optimize.scm
@@ -122,9 +122,18 @@
   (rotate-loops #:rotate-loops?)
   (simplify #:simplify?))
 
+(define-optimizer optimize-hoot-backend-cps
+  (eliminate-dead-code #:eliminate-dead-code?)
+  (simplify #:simplify?))
+
 (define (cps-optimizations)
   (available-optimizations 'cps))
 
+;; For the moment, this is just here.
+(define (hoot-backend-cps-optimizations)
+  '((#:simplify? 1)
+    (#:eliminate-dead-code? 1)))
+
 (define (target-runtime)
   "Determine what kind of virtual machine we are targetting.  Usually this
 is @code{guile-vm} when generating bytecode for Guile's virtual machine,
@@ -144,7 +153,7 @@ but it can be @code{hoot} when targetting WebAssembly."
   (set! exp (convert-closures exp))
   (optimize-first-order-cps exp opts))
 
-(define (select-opts-for-optimization-level optimization-level opts all-opts)
+(define (select-optimizations optimization-level opts all-opts)
   (define (kw-arg-ref args kw default)
     (match (memq kw args)
       ((_ val . _) val)
@@ -165,14 +174,18 @@ but it can be @code{hoot} when targetting WebAssembly."
         (reify-primitives
          (lower-primcalls exp)))))
     ('hoot
-     (lambda (exp env)
-       (unify-returns
-        (tailify exp))))))
+     (let ((opts (select-optimizations optimization-level opts
+                                       (hoot-backend-cps-optimizations))))
+       (lambda (exp env)
+         (optimize-hoot-backend-cps
+          (unify-returns
+           (tailify exp))
+          opts))))))
 
 (define (make-cps-lowerer optimization-level opts)
   (define generic-opts
-    (select-opts-for-optimization-level optimization-level opts
-                                        (cps-optimizations)))
+    (select-optimizations optimization-level opts
+                          (cps-optimizations)))
   (define lower-cps/backend
     (make-backend-cps-lowerer optimization-level opts))
   (lambda (exp env)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]