X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefs.lisp;h=777338a6a965ef05141e94a8ad5e72528680449c;hb=f9b0f51a03824319cb45388c5a9fdb813c04f2d1;hp=cea2b0e514447e172a7e8f56cac0e2bd838a89d2;hpb=4f7161165647d655392713a0d95c951e4e1749ea;p=sbcl.git diff --git a/src/pcl/defs.lisp b/src/pcl/defs.lisp index cea2b0e..777338a 100644 --- a/src/pcl/defs.lisp +++ b/src/pcl/defs.lisp @@ -28,11 +28,11 @@ ;;; build, of course, but they might happen if someone is experimenting ;;; and debugging, and it's probably worth complaining if they do, ;;; so we've left 'em in.) -(when (eq *boot-state* 'complete) +(when (eq **boot-state** 'complete) (error "Trying to load (or compile) PCL in an environment in which it~%~ has already been loaded. This doesn't work, you will have to~%~ get a fresh lisp (reboot) and then load PCL.")) -(when *boot-state* +(when **boot-state** (cerror "Try loading (or compiling) PCL anyways." "Trying to load (or compile) PCL in an environment in which it~%~ has already been partially loaded. This may not work, you may~%~ @@ -91,7 +91,7 @@ (when (symbolp specl) ;;maybe (or (find-class specl nil) (ensure-class specl)) instead? (setq specl (find-class specl))) - (or (not (eq *boot-state* 'complete)) + (or (not (eq **boot-state** 'complete)) (specializerp specl))) (specializer-type specl)) (t @@ -130,7 +130,7 @@ (let ((type (specializer-type class))) (if (listp type) type `(,type))) `(,type)))) - ((or (not (eq *boot-state* 'complete)) + ((or (not (eq **boot-state** 'complete)) (specializerp type)) (specializer-type type)) (t @@ -158,7 +158,7 @@ (defun *subtypep (type1 type2) (if (equal type1 type2) (values t t) - (if (eq *boot-state* 'early) + (if (eq **boot-state** 'early) (values (eq type1 type2) t) (let ((*in-precompute-effective-methods-p* t)) (declare (special *in-precompute-effective-methods-p*)) @@ -230,7 +230,7 @@ (dohash ((sub v) subs) (declare (ignore v)) (/noshow sub) - (when (member class (direct-supers sub)) + (when (member class (direct-supers sub) :test #'eq) (res sub))))) (res)))) (mapcar (lambda (kernel-bic-entry) @@ -360,7 +360,12 @@ ;; Used to make DFUN-STATE & FIN-FUNCTION updates atomic. (%lock :initform (sb-thread::make-spinlock :name "GF lock") - :reader gf-lock)) + :reader gf-lock) + ;; Set to true by ADD-METHOD, REMOVE-METHOD; to false by + ;; MAYBE-UPDATE-INFO-FOR-GF. + (info-needs-update + :initform nil + :accessor gf-info-needs-update)) (:metaclass funcallable-standard-class) (:default-initargs :method-class *the-class-standard-method* :method-combination *standard-method-combination*)) @@ -663,10 +668,14 @@ ()) (defclass standard-class (std-class) - ()) + () + (:default-initargs + :direct-superclasses (list *the-class-standard-object*))) (defclass funcallable-standard-class (std-class) - ()) + () + (:default-initargs + :direct-superclasses (list *the-class-funcallable-standard-object*))) (defclass forward-referenced-class (pcl-class) ()) @@ -675,15 +684,9 @@ (defclass condition-class (slot-class) ()) (defclass structure-class (slot-class) - ((defstruct-form - :initform () - :accessor class-defstruct-form) - (defstruct-constructor - :initform nil - :accessor class-defstruct-constructor) - (from-defclass-p - :initform nil - :initarg :from-defclass-p))) + ((defstruct-form :initform () :accessor class-defstruct-form) + (defstruct-constructor :initform nil :accessor class-defstruct-constructor) + (from-defclass-p :initform nil :initarg :from-defclass-p))) (defclass definition-source-mixin (standard-object) ((source