From 3409980ba536aa695b71220a4bbdcff8a748af46 Mon Sep 17 00:00:00 2001 From: Juanjo Garcia-Ripoll Date: Fri, 5 Oct 2012 16:02:52 +0200 Subject: [PATCH] Save some space in boot.lsp by removing explicit metaclasses in the list --- src/clos/boot.lsp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/clos/boot.lsp b/src/clos/boot.lsp index 436de778b..52f84f135 100644 --- a/src/clos/boot.lsp +++ b/src/clos/boot.lsp @@ -106,51 +106,40 @@ collect (canonical-slot-to-direct-slot nil s)))) (eval-when (eval) (defconstant +class-hierarchy+ - `((standard-class) ; Special-cased below + `((standard-class + :metaclass nil) ; Special-cased below (t - :index 0 - :metaclass standard-class) + :index 0) (standard-object - :metaclass standard-class :direct-superclasses (t)) (metaobject - :metaclass standard-class :direct-superclasses (standard-object)) (method-combination - :metaclass standard-class :direct-superclasses (metaobject) :direct-slots #.(canonical-slots +method-combination-slots+)) (specializer - :metaclass standard-class :direct-superclasses (metaobject) :direct-slots #.(canonical-slots +specializer-slots+)) (eql-specializer - :metaclass standard-class :direct-superclasses (specializer) :direct-slots #.(canonical-slots +eql-specializer-slots+)) (class - :metaclass standard-class :direct-superclasses (specializer) :direct-slots #.(canonical-slots +class-slots+)) (forward-referenced-class - :metaclass standard-class :direct-superclasses (class) :direct-slots #.(canonical-slots +class-slots+)) (built-in-class - :metaclass standard-class :direct-superclasses (class) :direct-slots #1=#.(canonical-slots +standard-class-slots+)) (std-class - :metaclass standard-class :direct-superclasses (class) :direct-slots #1#) (standard-class - :metaclass standard-class :direct-superclasses (std-class) :direct-slots #1# :metaclass standard-class) (funcallable-standard-class - :metaclass standard-class :direct-superclasses (std-class) :direct-slots #1#) ,@(loop for (name . rest) in +builtin-classes-list+ @@ -166,12 +155,10 @@ ;;; 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 direct-superclasses direct-slots index) +(defun make-empty-standard-class (name &key (metaclass 'standard-class) + direct-superclasses direct-slots index) (declare (si::c-local)) - (let* ((the-metaclass (cond (metaclass - (gethash metaclass si::*class-name-hash-table*)) - (t - nil))) + (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+)))))