(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)
;; -- --> 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)