X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fstd-class.lisp;h=80f77195a94ca82f0fcd3f098ac0a2d11b470f6c;hb=a7e7d0b213aa1133cc419421d611e7e2ad36808c;hp=c3216bae354ca52e557003eeec967c3c5801b673;hpb=149038614c51e3546f5cf2ab7bba6a0332c37095;p=sbcl.git diff --git a/src/pcl/std-class.lisp b/src/pcl/std-class.lisp index c3216ba..80f7719 100644 --- a/src/pcl/std-class.lisp +++ b/src/pcl/std-class.lisp @@ -917,11 +917,12 @@ (defun compute-class-slots (eslotds) (let (collect) - (dolist (eslotd eslotds) - (push (assoc (slot-definition-name eslotd) - (class-slot-cells (slot-definition-class eslotd))) - collect)) - (nreverse collect))) + (dolist (eslotd eslotds (nreverse collect)) + (let ((cell (assoc (slot-definition-name eslotd) + (class-slot-cells + (slot-definition-allocation-class eslotd))))) + (aver cell) + (push cell collect))))) (defun update-gfs-of-class (class) (when (and (class-finalized-p class) @@ -1356,15 +1357,6 @@ ;; -- --> local add slot ;; -- --> shared -- - ;; Collect class slots from inherited wrappers. Needed for - ;; shared -> local transfers of inherited slots. - (let ((inherited (layout-inherits owrapper))) - (loop for i from (1- (length inherited)) downto 0 - for layout = (aref inherited i) - when (typep layout 'wrapper) - do (dolist (slot (wrapper-class-slots layout)) - (pushnew slot oclass-slots :key #'car)))) - ;; Go through all the old local slots. (let ((opos 0)) (dolist (name olayout)