Comment 6 for bug 1728074

Douglas Katzman (dougk) wrote :

new failure as a result of that commit.

(declaim (inline to-boolean))
(defun to-boolean (x) (/= x 0))

(declaim (inline foo))
(defun foo (storage key converter)
  (labels ((value (entry)
             (funcall converter (ash entry -17)))
           (insert (start key new)
             (when (baz)
               (return-from insert (value (aref storage start))))
             (let ((entry (aref storage start)))
               (let* ((okey (logand entry #xf00))
                      (ostart (logand okey #xf)))
                 (unless (= ostart start)
                   (insert ostart okey entry)))))
           (probe (index)
             (let ((entry (aref storage index)))
               (when (= key (logand #xf00 entry))
                 (value entry)))))
    (declare (inline value))
    (probe (logand key #xf))))

(defun %access-cache (cache key) (foo cache key #'to-boolean))

#<THREAD "main thread" RUNNING {10019C0083}>:
  The value
    NIL
  is not of type
    SB-C::NODE