diff --git a/code/type-boot.lisp b/code/type-boot.lisp index c3d77ce12cec60b95e4763c0eabd36f67a570b3b..28649fbbc2c04fc9b5d3a236950f193831345510 100644 --- a/code/type-boot.lisp +++ b/code/type-boot.lisp @@ -56,12 +56,12 @@ (eq (%primitive structure-ref thing 0) 'values-type))) ;;; Define this so that we can copy type-class structures before the defstruct -;;; for type-class runs. ### It relies on structures being build out of -;;; simple-vectors in order to determine the length. +;;; for type-class runs. ### It relies on structures being identical to +;;; simple-vectors so that the length can be extracted from the -1'st slot. ;;; (defun copy-type-class (tc) (let ((new (make-type-class))) - (dotimes (i (the index (length (the simple-vector tc)))) + (dotimes (i (truly-the index (%primitive structure-ref tc -1))) (declare (type index i)) (%primitive structure-index-set new i (%primitive structure-index-ref tc i)))