anchor.diff:      ((equal) 'sxhash)
       ((equalp) 'equalp-hash)))
   
  -(defun make-hash-table (&key (test 'eql) (size 101) (rehash-size 2.5) (rehash-threshold 0.5) (synchronized t))
  +;;; Unsynchronized hash-tables are safe for use with concurrent readers
  +;;; as long as they only contains gc-invariant keys.
  +(defun make-hash-table (&key (test 'eql) (size 101) (rehash-size 2.5) (rehash-threshold 0.5) (synchronized t) enforce-gc-invariant-keys)
     ;; Canonicalize and check the test function
     (cond ((eql test #'eq) (setf test 'eq))
           ((eql test #'eql) (setf test 'eql))
  
positive.code:                                                       :initial-element *hash-table-unbound-value*)
            (hash-table-count hash-table) 0
            (hash-table-used hash-table) 0
            (hash-table-gc-invariant hash-table) t
            (hash-table-storage-epoch hash-table) *gc-epoch*)
      (dotimes (i old-size hash-table)
        (let ((key (svref old-storage (* i 2)))
  
negative.code:   (with-hash-table-lock (hash-table)
      (setf (hash-table-count hash-table) 0
            (hash-table-used hash-table) 0
            ;; Make sure to preserve :MANDATORY.
            (hash-table-gc-invariant hash-table) (or (hash-table-gc-invariant hash-table) t)
            (hash-table-storage hash-table) (make-array (length (hash-table-storage hash-table))
                                                        :initial-element *hash-table-unbound-value*))
      hash-table))
  