X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fstd-class.lisp;h=c3216bae354ca52e557003eeec967c3c5801b673;hb=2561033fd3ed9e224dffc445262e097e5abfa920;hp=0af7d48d83206cf98cfa14e42676be35420ddc07;hpb=96eea51e453a0033d1c24f32aa81176bceea4ba2;p=sbcl.git diff --git a/src/pcl/std-class.lisp b/src/pcl/std-class.lisp index 0af7d48..c3216ba 100644 --- a/src/pcl/std-class.lisp +++ b/src/pcl/std-class.lisp @@ -73,10 +73,6 @@ effective-slot-definition)) (let* ((name (slot-value slotd 'name)) (class (slot-value slotd '%class))) - (let ((table (or (gethash name *name->class->slotd-table*) - (setf (gethash name *name->class->slotd-table*) - (make-hash-table :test 'eq :size 5))))) - (setf (gethash class table) slotd)) (dolist (type '(reader writer boundp)) (let* ((gf-name (ecase type (reader 'slot-value-using-class) @@ -798,6 +794,8 @@ (not (class-finalized-p class)) (not (class-has-a-forward-referenced-superclass-p class))) (finalize-inheritance class) + (dolist (sub (class-direct-subclasses class)) + (update-class sub nil)) (return-from update-class)) (when (or finalizep (class-finalized-p class) (not (class-has-a-forward-referenced-superclass-p class))) @@ -812,8 +810,9 @@ (update-gfs-of-class class) (update-initargs class (compute-default-initargs class)) (update-ctors 'finalize-inheritance :class class)) - (dolist (sub (class-direct-subclasses class)) - (update-class sub nil)))) + (unless finalizep + (dolist (sub (class-direct-subclasses class)) + (update-class sub nil))))) (define-condition cpl-protocol-violation (reference-condition error) ((class :initarg :class :reader cpl-protocol-violation-class)