diff --git a/src/clos/boot.lsp b/src/clos/boot.lsp index 7cf94282a..a8c110594 100644 --- a/src/clos/boot.lsp +++ b/src/clos/boot.lsp @@ -18,13 +18,15 @@ ;;; We cannot use the functions CREATE-STANDARD-CLASS and others because SLOTS, ;;; DIRECT-SLOTS, etc are empty and therefore SLOT-VALUE does not work. -(defun make-empty-standard-class (name &key (metaclass 'standard-class) - direct-superclasses direct-slots index) +(defun make-empty-standard-class + (name &key (metaclass 'standard-class) + direct-superclasses direct-slots index + (size #.(length +standard-class-slots+))) (declare (optimize speed (safety 0))) - (let* ((the-metaclass (and metaclass (gethash metaclass si::*class-name-hash-table*))) + (let* ((the-metaclass + (and metaclass (gethash metaclass si::*class-name-hash-table*))) (class (or (gethash name si::*class-name-hash-table*) - (si:allocate-raw-instance nil the-metaclass - #.(length +standard-class-slots+))))) + (si:allocate-raw-instance nil the-metaclass size)))) (with-early-accessors (+standard-class-slots+) (when (eq name 'standard-class) (defconstant +the-standard-class+ class) diff --git a/src/clos/hierarchy.lsp b/src/clos/hierarchy.lsp index 6c6b9ac0f..76ad51073 100644 --- a/src/clos/hierarchy.lsp +++ b/src/clos/hierarchy.lsp @@ -374,6 +374,7 @@ :direct-slots #.+structure-class-slots+) (structure-object :metaclass structure-class - :direct-superclasses (t)) + :direct-superclasses (t) + :size #.(length +structure-class-slots+)) )))