anchor.diff:      (symbol (make-value (symbol-address (symbol-name object)
                                           (keywordp object))
                           +tag-symbol+))
  +    ((vector (unsigned-byte 1))
  +     (save-ub1-vector object area))
  +    ((vector (unsigned-byte 2))
  +     (save-ub2-vector object area))
  +    ((vector (unsigned-byte 4))
  +     (save-ub4-vector object area))
       ((vector (unsigned-byte 8))
        (save-ub8-vector object area))
  +    ((vector (unsigned-byte 16))
  +     (save-ub16-vector object area))
       ((vector (unsigned-byte 32))
        (save-ub32-vector object area))
       ((vector (unsigned-byte 64))
  
positive.code:         (setf (word (+ address 1 i)) value)))
      (make-value address +tag-array-like+)))
  
  (defun save-ub32-vector (vec &optional (area :dynamic))
    (let ((address (allocate (1+ (ceiling (length vec) 2)) area)))
      (setf (word address) (array-header +array-type-unsigned-byte-32+ (length vec)))
  
negative.code:   (sys.c::save-compiler-builtins "%%compiler-builtins.llf")
    (load-source-file "%%compiler-builtins.llf" t))
  
  (defun save-ub1-vector (vec &optional (area :dynamic))
    (let ((address (allocate (1+ (ceiling (length vec) 64)) area)))
      (setf (word address) (array-header +array-type-bit+ (length vec)))
      (dotimes (i (ceiling (length vec) 64))
        (let ((value 0))
          (dotimes (j 64)
            (when (< (+ (* i 64) j) (length vec))
              (setf (ldb (byte 1 64) value) (aref vec (+ (* i 64) j))))
            (setf value (ash value -1)))
          (setf (word (+ address 1 i)) value)))
      (make-value address +tag-array-like+)))
  
  (defun save-ub2-vector (vec &optional (area :dynamic))
    (let ((address (allocate (1+ (ceiling (length vec) 32)) area)))
      (setf (word address) (array-header +array-type-unsigned-byte-2+ (length vec)))
      (dotimes (i (ceiling (length vec) 32))
        (let ((value 0))
          (dotimes (j 32)
            (when (< (+ (* i 32) j) (length vec))
              (setf (ldb (byte 2 64) value) (aref vec (+ (* i 32) j))))
            (setf value (ash value -2)))
          (setf (word (+ address 1 i)) value)))
      (make-value address +tag-array-like+)))
  
  (defun save-ub4-vector (vec &optional (area :dynamic))
    (let ((address (allocate (1+ (ceiling (length vec) 16)) area)))
      (setf (word address) (array-header +array-type-unsigned-byte-4+ (length vec)))
      (dotimes (i (ceiling (length vec) 16))
        (let ((value 0))
          (dotimes (j 16)
            (when (< (+ (* i 16) j) (length vec))
              (setf (ldb (byte 4 64) value) (aref vec (+ (* i 16) j))))
            (setf value (ash value -4)))
          (setf (word (+ address 1 i)) value)))
      (make-value address +tag-array-like+)))
  
  (defun save-ub8-vector (vec &optional (area :dynamic))
    (let ((address (allocate (1+ (ceiling (length vec) 8)) area)))
      (setf (word address) (array-header +array-type-unsigned-byte-8+ (length vec)))
  