anchor.diff:  
   (defconstant +freelist-metadata-size+ 32)
   
  +(defun store-refill-metadata ()
  +  ;; Repopulate freelist.
  +  (let* ((frame (let ((*store-freelist-recursive-metadata-allocation* t))
  +                  (pager-allocate-page :other)))
  +         (addr (+ +physical-map-base+ (ash frame 12))))
  +    (dotimes (i (truncate #x1000 +freelist-metadata-size+))
  +      (setf (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 0) 0
  +            (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 1) 0
  +            (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 2) 0
  +            (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 3) 0)
  +      (incf *store-freelist-n-free-metadata*)
  +      (setf (freelist-metadata-next (+ addr (* i +freelist-metadata-size+))) *store-freelist-metadata-freelist*
  +            *store-freelist-metadata-freelist* (+ addr (* i +freelist-metadata-size+))))))
  +
   (defun freelist-alloc-metadata (start end freep)
  -  (when (not *store-freelist-metadata-freelist*)
  -    ;; Repopulate freelist.
  -    ;; This allocation could potentially get exciting.
  -    ;; PAGER-ALLOCATE-PAGE doesn't call back into the store functions,
  -    ;; but if it does then this'll have to change.
  -    (let* ((frame (pager-allocate-page :other))
  -           (addr (+ +physical-map-base+ (ash frame 12))))
  -      (dotimes (i (truncate #x1000 +freelist-metadata-size+))
  -        (setf (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 0) 0
  -              (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 1) 0
  -              (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 2) 0
  -              (sys.int::memref-unsigned-byte-64 (+ addr (* i +freelist-metadata-size+)) 3) 0)
  -        (setf (freelist-metadata-next (+ addr (* i +freelist-metadata-size+))) *store-freelist-metadata-freelist*
  -              *store-freelist-metadata-freelist* (+ addr (* i +freelist-metadata-size+))))))
  +  (ensure *store-freelist-metadata-freelist* "No available freelist metadata objects!")
     (let ((new *store-freelist-metadata-freelist*))
       (setf *store-freelist-metadata-freelist* (freelist-metadata-next new))
       (setf (freelist-metadata-start new) start
  
positive.code:       (when (not (freelist-metadata-free-p range))
          (incf total-allocated-ranges)))
      ;; Allocate disk block & memory page.
      (setf disk-block (store-alloc-1 1))
      (when (not disk-block)
        ;; Oh, the irony.
        (debug-print-line "Unable to allocate store for freelist.")
        (return-from regenerate-store-freelist nil))
      (setf memory-block (allocate-page))
      (when (not memory-block)
        (store-free-1 disk-block 1)
        (debug-print-line "Unable to allocate memory for freelist.")
        (return-from regenerate-store-freelist nil))
      (zeroize-page memory-block)
  
negative.code: 
  ;;; Free metadata objects.
  (defvar *store-freelist-metadata-freelist*)
  (defvar *store-freelist-n-free-metadata*)
  (defvar *store-freelist-recursive-metadata-allocation*)
  (defconstant +store-freelist-metadata-soft-limit+ 16)
  
  ;;; Block counts.
  (defvar *store-freelist-n-free-blocks*)
  