guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 05/09: Intset-next micro-optimizations


From: Andy Wingo
Subject: [Guile-commits] 05/09: Intset-next micro-optimizations
Date: Wed, 08 Apr 2015 15:21:05 +0000

wingo pushed a commit to branch master
in repository guile.

commit 048d5d340ec2657f62dc2dbb4895186aa4ab22ad
Author: Andy Wingo <address@hidden>
Date:   Tue Mar 31 12:11:22 2015 +0200

    Intset-next micro-optimizations
    
    * module/language/cps/intset.scm (intset-next): Micro-optimizations.
---
 module/language/cps/intset.scm |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/module/language/cps/intset.scm b/module/language/cps/intset.scm
index a6d3640..175b9e5 100644
--- a/module/language/cps/intset.scm
+++ b/module/language/cps/intset.scm
@@ -236,20 +236,20 @@
   (define (visit-branch node shift i)
     (let lp ((i i) (idx (logand (ash i (- shift)) *branch-mask*)))
       (and (< idx *branch-size*)
-           (or (visit-node (vector-ref node idx) shift i)
+           (or (let ((node (vector-ref node idx)))
+                 (and node (visit-node node shift i)))
                (let ((inc (ash 1 shift)))
                  (lp (+ (round-down i shift) inc) (1+ idx)))))))
   (define (visit-node node shift i)
-    (and node
-         (if (= shift *leaf-bits*)
-             (visit-leaf node i)
-             (visit-branch node (- shift *branch-bits*) i))))
+    (if (= shift *leaf-bits*)
+        (visit-leaf node i)
+        (visit-branch node (- shift *branch-bits*) i)))
   (match bs
     (($ <intset> min shift root)
      (let ((i (if (and i (< min i))
                   (- i min)
                   0)))
-       (and (< i (ash 1 shift))
+       (and root (< i (ash 1 shift))
             (let ((i (visit-node root shift i)))
               (and i (+ min i))))))))
 



reply via email to

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