- (let* ((table ,hash-table)
- (length (length (hash-table-next-vector table)))
- (index 1))
- (declare (type (mod #.(floor most-positive-fixnum 2)) index))
- (labels
- ((,function ()
- ;; (We grab the table again on each iteration just in
- ;; case it was rehashed by a PUTHASH.)
- (let ((kv-vector (hash-table-table table)))
- (do ()
- ((>= index length) (values nil))
- (let ((key (aref kv-vector (* 2 index)))
- (value (aref kv-vector (1+ (* 2 index)))))
- (incf index)
- (unless (and (eq key +empty-ht-slot+)
- (eq value +empty-ht-slot+))
- (return (values t key value))))))))
- #',function))))
+ (let* ((table ,hash-table)
+ (length (length (hash-table-next-vector table)))
+ (index 1))
+ (declare (type index/2 index))
+ (labels
+ ((,function ()
+ ;; (We grab the table again on each iteration just in
+ ;; case it was rehashed by a PUTHASH.)
+ (let ((kv-vector (hash-table-table table)))
+ (do ()
+ ((>= index length) (values nil))
+ (let ((key (aref kv-vector (* 2 index)))
+ (value (aref kv-vector (1+ (* 2 index)))))
+ (incf index)
+ (unless (and (eq key +empty-ht-slot+)
+ (eq value +empty-ht-slot+))
+ (return (values t key value))))))))
+ #',function))))