guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 01/01: Better f64 unboxing for loop vars that might flow


From: Andy Wingo
Subject: [Guile-commits] 01/01: Better f64 unboxing for loop vars that might flow to $ktail
Date: Thu, 29 Oct 2015 14:51:45 +0000

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

commit 7a7e74c0dd8ff16ee77dfbbb64de001e8157a95b
Author: Andy Wingo <address@hidden>
Date:   Thu Oct 29 14:50:59 2015 +0000

    Better f64 unboxing for loop vars that might flow to $ktail
    
    * module/language/cps/specialize-numbers.scm 
(compute-specializable-f64-vars):
      Tweak to allow f64 values to flow directly to return sites.
---
 module/language/cps/specialize-numbers.scm |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/module/language/cps/specialize-numbers.scm 
b/module/language/cps/specialize-numbers.scm
index 6d61f5b..9aa8035 100644
--- a/module/language/cps/specialize-numbers.scm
+++ b/module/language/cps/specialize-numbers.scm
@@ -178,14 +178,20 @@
           (match exp
             (($ $primcall 'scm->f64 (var))
              (intset-add f64-uses var))
-            (($ $values (var))
+            (($ $values vars)
              (match (intmap-ref cps k)
-               (($ $kargs (_) (def))
-                (if (intset-ref f64-defs def)
-                    (intset-add f64-uses var)
-                    f64-uses))
-               ;; Could be $ktail.
-               (_ f64-uses)))
+               (($ $kargs _ defs)
+                (fold (lambda (var def f64-uses)
+                        (if (intset-ref f64-defs def)
+                            (intset-add f64-uses var)
+                            f64-uses))
+                      f64-uses vars defs))
+               (($ $ktail)
+                ;; Assume return is rare and that any f64-valued def can
+                ;; be reboxed when leaving the procedure.
+                (fold (lambda (var f64-uses)
+                        (intset-add f64-uses var))
+                      f64-uses vars))))
             (_ f64-uses)))
          (_ f64-uses)))
      body empty-intset))



reply via email to

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