diff --git a/code/type-boot.lisp b/code/type-boot.lisp index 28649fbbc2c04fc9b5d3a236950f193831345510..09f1bce200c1a9e29348ca7e61bc6d3954ee8e1a 100644 --- a/code/type-boot.lisp +++ b/code/type-boot.lisp @@ -23,17 +23,13 @@ ;;; Define this now so that EQUAL works: ;;; (defun pathnamep (x) - (and (structurep x) - (eq (%primitive structure-ref x 0) - 'pathname))) + (and (structurep x) (eq (structure-ref x 0) 'pathname))) ;;; Define so that we can test for VOLATILE-INFO-ENVs from the beginning of ;;; initialization. ;;; (defun volatile-info-env-p (x) - (and (structurep x) - (eq (%primitive structure-ref x 0) - 'volatile-info-env))) + (and (structurep x) (eq (structure-ref x 0) 'volatile-info-env))) (deftype inlinep () @@ -46,23 +42,21 @@ (in-package "KERNEL") (defun ctype-p (thing) (and (structurep thing) - (member (%primitive structure-ref thing 0) + (member (structure-ref thing 0) '(ctype hairy-type named-type numeric-type array-type member-type structure-type union-type args-type values-type function-type)))) (defun values-type-p (thing) - (and (structurep thing) - (eq (%primitive structure-ref thing 0) 'values-type))) + (and (structurep thing) (eq (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 identical to -;;; simple-vectors so that the length can be extracted from the -1'st slot. +;;; for type-class runs. ;;; (defun copy-type-class (tc) (let ((new (make-type-class))) - (dotimes (i (truly-the index (%primitive structure-ref tc -1))) + (dotimes (i (c::structure-length tc)) (declare (type index i)) - (%primitive structure-index-set new i - (%primitive structure-index-ref tc i))) + (setf (c::structure-ref new i) + (c::structure-ref tc i))) new))