;;; 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~%~
(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
(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
;;;
;;; FIXME: SB-KERNEL has fast-and-not-quite-precise type code for use
;;; in the compiler. Could we share some of it here?
+(defvar *in-*subtypep* nil)
+
(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*))
- ;; FIXME: *IN-PRECOMPUTE-EFFECTIVE-METHODS-P* is not a
- ;; good name. It changes the way
- ;; CLASS-APPLICABLE-USING-CLASS-P works.
+ (let ((*in-*subtypep* t))
(setq type1 (*normalize-type type1))
(setq type2 (*normalize-type type2))
(case (car type2)
;; 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*))
())
(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) ())
(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