X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefs.lisp;h=068b49f4f60016a14fbf0fa2c9c8aa4304c4b7c9;hb=975f1932acc3a8e90fb31d2b055bfbdde78ea927;hp=9a718ab923472873129d007b0e991cde2e30af5f;hpb=0ee1135a83da462e6de2a98bb2eff837b278f926;p=sbcl.git diff --git a/src/pcl/defs.lisp b/src/pcl/defs.lisp index 9a718ab..068b49f 100644 --- a/src/pcl/defs.lisp +++ b/src/pcl/defs.lisp @@ -657,35 +657,10 @@ (defclass slot-class (pcl-class) ((direct-slots :initform () - :accessor class-direct-slots) + :reader class-direct-slots) (slots :initform () - :accessor class-slots) - (slot-vector - :initform #(nil) - :reader class-slot-vector))) - -;;; Make the slot-vector accessed by the after-fixup FIND-SLOT-DEFINITION. -;;; The slot vector is a simple-vector containing plists of slot-definitions -;;; keyd by their names. Slot definitions are put in the position indicated -;;; by (REM (SXHASH SLOT-NAME) (LENGTH SLOT-VECTOR)). -;;; -;;; We make the vector slightly longer then the number of slots both -;;; to reduce collisions (but we're not too picky, really) and to -;;; allow FIND-SLOT-DEFINTIONS work on slotless classes without -;;; needing to check for zero-length vectors. -(defun make-slot-vector (slots) - (let* ((n (+ (length slots) 2)) - (vector (make-array n :initial-element nil))) - (flet ((add-to-vector (name slot) - (setf (svref vector (rem (sxhash name) n)) - (list* name slot (svref vector (rem (sxhash name) n)))))) - (if (eq 'complete *boot-state*) - (dolist (slot slots) - (add-to-vector (slot-definition-name slot) slot)) - (dolist (slot slots) - (add-to-vector (early-slot-definition-name slot) slot)))) - vector)) + :reader class-slots))) ;;; The class STD-CLASS is an implementation-specific common ;;; superclass of the classes STANDARD-CLASS and