[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sbcl-commits
Subject:    [Sbcl-commits] master: Grow regalloc datastructures geometrically for unbounded SCs
From:       "Paul Khuong" <pkhuong () users ! sourceforge ! net>
Date:       2013-07-18 21:05:55
Message-ID: E1UzvOh-0007xf-Gg () sfs-ml-3 ! v29 ! ch3 ! sourceforge ! com
[Download RAW message or body]

The branch "master" has been updated in SBCL:
       via  a21899ff055c5c31184b277c01e52dafae4e5aa8 (commit)
      from  3b98d369be67b42cbd823af9c6df55ac9601bfa9 (commit)

- Log -----------------------------------------------------------------
commit a21899ff055c5c31184b277c01e52dafae4e5aa8
Author: Paul Khuong <pvk@pvk.ca>
Date:   Thu Jun 27 18:59:57 2013 -0400

    Grow regalloc datastructures geometrically for unbounded SCs
---
 src/compiler/pack.lisp |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/compiler/pack.lisp b/src/compiler/pack.lisp
index eeb8651..51ebd36 100644
--- a/src/compiler/pack.lisp
+++ b/src/compiler/pack.lisp
@@ -225,15 +225,16 @@
          (conflicts (finite-sb-conflicts sb))
          (block-size (if (zerop (length conflicts))
                          (ir2-block-count *component-being-compiled*)
-                         (length (the simple-vector (svref conflicts 0))))))
-    (declare (type index inc new-size))
+                         (length (the simple-vector (svref conflicts 0)))))
+         (padded-size (ash 1 (integer-length (1- new-size)))))
+    (declare (type index inc new-size padded-size))
     (aver (eq (sb-kind sb) :unbounded))
 
-    (when (> new-size (length conflicts))
-      (let ((new-conf (make-array new-size)))
+    (when (> padded-size (length conflicts))
+      (let ((new-conf (make-array padded-size)))
         (replace new-conf conflicts)
         (do ((i size (1+ i)))
-            ((= i new-size))
+            ((= i padded-size))
           (declare (type index i))
           (let ((loc-confs (make-array block-size)))
             (dotimes (j block-size)
@@ -244,23 +245,23 @@
             (setf (svref new-conf i) loc-confs)))
         (setf (finite-sb-conflicts sb) new-conf))
 
-      (let ((new-live (make-array new-size)))
+      (let ((new-live (make-array padded-size)))
         (replace new-live (finite-sb-always-live sb))
         (do ((i size (1+ i)))
-            ((= i new-size))
+            ((= i padded-size))
           (setf (svref new-live i)
                 (make-array block-size
                             :initial-element 0
                             :element-type 'bit)))
         (setf (finite-sb-always-live sb) new-live))
 
-      (let ((new-live-count (make-array new-size)))
+      (let ((new-live-count (make-array padded-size)))
         (declare (optimize speed)) ;; FILL deftransform
         (replace new-live-count (finite-sb-always-live-count sb))
         (fill new-live-count 0 :start size)
         (setf (finite-sb-always-live-count sb) new-live-count))
 
-      (let ((new-tns (make-array new-size :initial-element nil)))
+      (let ((new-tns (make-array padded-size :initial-element nil)))
         (replace new-tns (finite-sb-live-tns sb))
         (fill (finite-sb-live-tns sb) nil)
         (setf (finite-sb-live-tns sb) new-tns)))

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Sbcl-commits mailing list
Sbcl-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic