(mixf result (sxhash-number (realpart x)))
(mixf result (sxhash-number (imagpart x)))
result))))
- (sxhash-recurse (x &optional (depthoid +max-hash-depthoid+))
+ (sxhash-recurse (x depthoid)
(declare (type index depthoid))
(typecase x
;; we test for LIST here, rather than CONS, because the
(number (sxhash-number x))
(generic-function (sxhash-instance x))
(t 42))))
- (sxhash-recurse x)))
+ (sxhash-recurse x +max-hash-depthoid+)))
\f
;;;; the PSXHASH function
(name (classoid-name classoid))
(result (mix (sxhash name) (the fixnum 79867))))
(declare (type fixnum result))
- (dotimes (i (min depthoid (1- length)))
+ (dotimes (i (min depthoid (- length 1 (layout-n-untagged-slots layout))))
(declare (type fixnum i))
(let ((j (1+ i))) ; skipping slot #0, which is for LAYOUT
(declare (type fixnum j))
(mixf result
(psxhash (%instance-ref key j)
(1- depthoid)))))
+ ;; KLUDGE: Should hash untagged slots, too. (Although +max-hash-depthoid+
+ ;; is pretty low currently, so they might not make it into the hash
+ ;; value anyway.)
result))
(defun list-psxhash (key depthoid)