** CLASS-PROTOTYPE
-(sb-pcl:class-prototype (find-class 'null)) yields something decidedly
-weird -- it has allocated a NULL thingy. This is easy to solve
-[&optional (proto nil protop)]; probably harder are the issues for
-e.g. BIGNUM, some strange array classes, and so on, particularly in
-their interaction with the cross-compiler dumper, should PCL ever be
-moved to the main build.
+[ fixed the (CLASS-PROTOTYPE (FIND-CLASS 'NULL)) issue; more general
+ fix for other built-in-classes can be done in mainline post-merge ]
** SB-MOP
(metaclass-name class name
class-eq-wrapper source direct-supers direct-subclasses cpl wrapper
&optional
- proto direct-slots slots direct-default-initargs default-initargs)
+ (proto nil proto-p)
+ direct-slots slots direct-default-initargs default-initargs)
(flet ((classes (names) (mapcar #'find-class names))
(set-slot (slot-name value)
(!bootstrap-set-slot metaclass-name class slot-name value)))
(set-slot 'from-defclass-p t)
(set-slot 'plist nil)
(set-slot 'prototype (funcall constructor-sym)))
- (set-slot 'prototype (or proto (allocate-standard-instance wrapper))))
+ (set-slot 'prototype
+ (if proto-p proto (allocate-standard-instance wrapper))))
class))
(defun !bootstrap-make-slot-definitions (name class slots wrapper effective-p)
(assert (member (find-class x)
(sb-pcl:class-direct-subclasses (find-class t)))))
\f
+;;; the class-prototype of the NULL class used to be some weird
+;;; standard-instance-like thing. Make sure it's actually NIL.
+;;;
+;;; (and FIXME: eventually turn this into asserting that the prototype
+;;; of all built-in-classes is of the relevant type)
+(assert (null (sb-pcl:class-prototype (find-class 'null))))
+\f
;;;; success
(sb-ext:quit :unix-status 104)
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.13.pcl-class.2"
+"0.7.13.pcl-class.3"