anchor.diff:                          (add-class (%struct-slot object 0))))))))
       (values allocated-words total-words largest-free-space
               n-allocated-objects allocated-objects-sizes allocated-classes)))
  +
  +(defun print-fragment-counts (counts)
  +  (format t "  Free fragment counts:~%")
  +  (dotimes (i (length counts))
  +    (let ((n (aref counts i)))
  +      (when (not (zerop n))
  +        (format t "    ~:D words:~35T~D~%" (ash 1 i) n)))))
  +
  +(defun pinned-area-fragment-counts (area)
  +  (let ((counts (make-array 64 :initial-element 0)))
  +    (walk-area area
  +               (lambda (object address size)
  +                 (declare (ignore address))
  +                 (when (%object-of-type-p object +object-tag-freelist-entry+)
  +                   (incf (aref counts (integer-length (1- size)))))))
  +    counts))
  
positive.code:       (incf total-used allocated-words)
        (incf total total-words)
        (when (eql verbosity t)
          (print-n-allocated-objects-table n-allocated-objects allocated-object-sizes allocated-classes)))
      (multiple-value-bind (allocated-words total-words largest-free-space n-allocated-objects allocated-object-sizes allocated-classes)
          (area-info :pinned)
        (format t "Pinned area: ~:D/~:D words allocated (~D%).~%"
  
negative.code:                   (vector-push 1 allocated-classes))))
        (walk-area area
                   (lambda (object address size)
                     (declare (ignore address))
                     (let ((tag (if (consp object)
                                    +object-tag-cons+
                                    (%object-tag object))))
  