X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-defstruct.lisp;h=0e5742f9f7884f05932f051300a86e4adf9b4650;hb=151fa3c5d85e3fd4621f65ee9676822a73ffbb57;hp=22954538fee3d71c258e8ff68f0f86e65817cfe3;hpb=1cba0af01f5107ab384d0d8b94b1f6330b3d0ef4;p=sbcl.git diff --git a/src/code/target-defstruct.lisp b/src/code/target-defstruct.lisp index 2295453..0e5742f 100644 --- a/src/code/target-defstruct.lisp +++ b/src/code/target-defstruct.lisp @@ -394,21 +394,14 @@ ;; all this with %RAW-INSTANCE-REF/WORD and bitwise comparisons, but ;; that'll fail in some cases. For example -0.0 and 0.0 are EQUALP ;; but have different bit patterns. -- JES, 2007-08-21 - (loop with i = 0 - for dsd in (dd-slots (layout-info layout)) + (loop for dsd in (dd-slots (layout-info layout)) for raw-type = (dsd-raw-type dsd) - for rsd = (when raw-type + for rsd = (unless (eql raw-type t) (find raw-type *raw-slot-data-list* :key 'raw-slot-data-raw-type)) always (or (not rsd) - (progn - #!-(or x86 x86-64 ppc) - (setf i (logandc2 (+ i (1- (raw-slot-data-alignment rsd))) - (1- (raw-slot-data-alignment rsd)))) - (prog1 - (funcall (raw-slot-data-comparer rsd) i x y) - (incf i (raw-slot-data-n-words rsd))))))) + (funcall (raw-slot-data-comparer rsd) (dsd-index dsd) x y)))) ;;; default PRINT-OBJECT method