Builtin in classes are now also created in boot.lsp

This commit is contained in:
Juanjo Garcia-Ripoll 2012-10-05 16:00:04 +02:00
parent add4b1bb29
commit 632e208a5c
2 changed files with 14 additions and 13 deletions

View file

@ -106,8 +106,9 @@
collect (canonical-slot-to-direct-slot nil s))))
(eval-when (eval)
(defconstant +class-hierarchy+
'((standard-class) ; Special-cased below
`((standard-class) ; Special-cased below
(t
:index 0
:metaclass standard-class)
(standard-object
:metaclass standard-class
@ -151,7 +152,13 @@
(funcallable-standard-class
:metaclass standard-class
:direct-superclasses (std-class)
:direct-slots #1#))))
:direct-slots #1#)
,@(loop for (name . rest) in +builtin-classes-list+
for index from 1
collect (list name :metaclass 'built-in-class
:index index
:direct-superclasses (or rest '(t))))
)))
;;; ----------------------------------------------------------------------
;;; Building the classes T, CLASS, STANDARD-OBJECT and STANDARD-CLASS.

View file

@ -22,17 +22,11 @@
(declare (ignore initargs))
(error "The built-in class (~A) cannot be instantiated" class))
(loop for (name . rest) in '#.+builtin-classes-list+
for index from 1
with built-in-class = (find-class 'built-in-class)
with array = +builtin-classes-pre-array+
do (let* ((direct-superclasses (mapcar #'find-class (or rest '(t))))
(class (make-instance built-in-class :name name
:direct-superclasses direct-superclasses
:direct-slots nil)))
(setf (find-class name) class
(aref array index) class))
finally (si::*make-constant '+builtin-classes+ array))
;;;
;;; At this point we can activate the vector of builtin classes, which
;;; is used by class-of and other functions.
;;;
(si::*make-constant '+builtin-classes+ +builtin-classes-pre-array+)
(defmethod ensure-class-using-class ((class null) name &rest rest)
(declare (ignore class))