X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ftarget-sxhash.lisp;h=cbc226771e99e40e4632dfe870a24a574ccf1f9e;hb=3fe0010d2777b41e01ea9b4a0f894cfa40f7df1b;hp=35fdcdce89fb66509bfab67ad9a07c639952b861;hpb=5498f6df0e050e4bdb1957e3f2f107de2e54e67a;p=sbcl.git diff --git a/src/code/target-sxhash.lisp b/src/code/target-sxhash.lisp index 35fdcdc..cbc2267 100644 --- a/src/code/target-sxhash.lisp +++ b/src/code/target-sxhash.lisp @@ -289,13 +289,16 @@ (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)