Disentangle storage base initial size from growth increments
[sbcl.git] / src / compiler / pack.lisp
index cdc2318..eeb8651 100644 (file)
   (let* ((sb (sc-sb sc))
          (size (finite-sb-current-size sb))
          (align-mask (1- (sc-alignment sc)))
-         (inc (max (sb-size sb)
+         (inc (max (finite-sb-size-increment sb)
                    (+ (sc-element-size sc)
                       (- (logandc2 (+ size align-mask) align-mask)
                          size))
                    (- needed-size size)))
-         (new-size (+ size inc))
+         (new-size (let ((align-mask (1- (finite-sb-size-alignment sb))))
+                     (logandc2 (+  size inc align-mask) align-mask)))
          (conflicts (finite-sb-conflicts sb))
          (block-size (if (zerop (length conflicts))
                          (ir2-block-count *component-being-compiled*)