0.6.10.20:
[sbcl.git] / src / pcl / std-class.lisp
index c11788f..2327178 100644 (file)
@@ -21,9 +21,6 @@
 ;;;; warranty about the software, its performance or its conformity to any
 ;;;; specification.
 
-(sb-int:file-comment
-  "$Header$")
-
 (in-package "SB-PCL")
 \f
 (defmethod slot-accessor-function ((slotd effective-slot-definition) type)
     (writer (setf (slot-definition-writer-function slotd) function))
     (boundp (setf (slot-definition-boundp-function slotd) function))))
 
-(defconstant *slotd-reader-function-std-p* 1)
-(defconstant *slotd-writer-function-std-p* 2)
-(defconstant *slotd-boundp-function-std-p* 4)
-(defconstant *slotd-all-function-std-p* 7)
+(defconstant +slotd-reader-function-std-p+ 1)
+(defconstant +slotd-writer-function-std-p+ 2)
+(defconstant +slotd-boundp-function-std-p+ 4)
+(defconstant +slotd-all-function-std-p+ 7)
 
 (defmethod slot-accessor-std-p ((slotd effective-slot-definition) type)
   (let ((flags (slot-value slotd 'accessor-flags)))
     (declare (type fixnum flags))
     (if (eq type 'all)
-       (eql *slotd-all-function-std-p* flags)
+       (eql +slotd-all-function-std-p+ flags)
        (let ((mask (ecase type
-                     (reader *slotd-reader-function-std-p*)
-                     (writer *slotd-writer-function-std-p*)
-                     (boundp *slotd-boundp-function-std-p*))))
+                     (reader +slotd-reader-function-std-p+)
+                     (writer +slotd-writer-function-std-p+)
+                     (boundp +slotd-boundp-function-std-p+))))
          (declare (type fixnum mask))
          (not (zerop (the fixnum (logand mask flags))))))))
 
@@ -61,9 +58,9 @@
                                       (slotd effective-slot-definition)
                                       type)
   (let ((mask (ecase type
-               (reader *slotd-reader-function-std-p*)
-               (writer *slotd-writer-function-std-p*)
-               (boundp *slotd-boundp-function-std-p*)))
+               (reader +slotd-reader-function-std-p+)
+               (writer +slotd-writer-function-std-p+)
+               (boundp +slotd-boundp-function-std-p+)))
        (flags (slot-value slotd 'accessor-flags)))
     (declare (type fixnum mask flags))
     (setf (slot-value slotd 'accessor-flags)
   (declare (ignore slot-names))
   (setf (slot-value specl 'type) `(eql ,(specializer-object specl))))
 \f
-(defun real-load-defclass (name metaclass-name supers slots other accessors)
-  (do-standard-defsetfs-for-defclass accessors)                        ;***
+(defun real-load-defclass (name metaclass-name supers slots other)
   (let ((res (apply #'ensure-class name :metaclass metaclass-name
                    :direct-superclasses supers
                    :direct-slots slots
     class))
 
 (defmethod class-predicate-name ((class t))
-  'function-returning-nil)
+  'constantly-nil)
 
 (defun ensure-class-values (class args)
   (let* ((initargs (copy-list args))
                (gather1 (cons (slot-definition-name dslotd)
                               (if initfunction
                                   (funcall initfunction)
-                                  *slot-unbound*))))))))
+                                  +slot-unbound+))))))))
   (setq predicate-name (if predicate-name-p
                           (setf (slot-value class 'predicate-name)
                                 (car predicate-name))
 
 (defmethod shared-initialize :before ((class class) slot-names &key name)
   (declare (ignore slot-names name))
+  ;; FIXME: Could this just be CLASS instead of `(CLASS ,CLASS)? If not,
+  ;; why not? (See also similar expression in !BOOTSTRAP-INITIALIZE-CLASS.)
   (setf (slot-value class 'type) `(class ,class))
   (setf (slot-value class 'class-eq-specializer)
        (make-instance 'class-eq-specializer :class class)))
                                      (:constructor ,constructor ()))
                           ,@(mapcar #'(lambda (slot)
                                         `(,(slot-definition-name slot)
-                                          *slot-unbound*))
+                                          +slot-unbound+))
                                     direct-slots)))
-            (reader-names (mapcar #'(lambda (slotd)
-                                      (intern (format nil "~A~A reader" conc-name
-                                                      (slot-definition-name slotd))))
+            (reader-names (mapcar (lambda (slotd)
+                                    (intern (format nil
+                                                    "~A~A reader"
+                                                    conc-name
+                                                    (slot-definition-name
+                                                     slotd))))
                                   direct-slots))
-            (writer-names (mapcar #'(lambda (slotd)
-                                      (intern (format nil "~A~A writer" conc-name
-                                                      (slot-definition-name slotd))))
+            (writer-names (mapcar (lambda (slotd)
+                                    (intern (format nil
+                                                    "~A~A writer"
+                                                    conc-name
+                                                    (slot-definition-name
+                                                     slotd))))
                                   direct-slots))
             (readers-init
-             (mapcar #'(lambda (slotd reader-name)
-                         (let ((accessor
-                                (slot-definition-defstruct-accessor-symbol slotd)))
-                           `(defun ,reader-name (obj)
-                              (declare (type ,name obj))
-                              (,accessor obj))))
+             (mapcar (lambda (slotd reader-name)
+                       (let ((accessor
+                              (slot-definition-defstruct-accessor-symbol
+                               slotd)))
+                         `(defun ,reader-name (obj)
+                            (declare (type ,name obj))
+                            (,accessor obj))))
                      direct-slots reader-names))
             (writers-init
-             (mapcar #'(lambda (slotd writer-name)
-                         (let ((accessor
-                                (slot-definition-defstruct-accessor-symbol slotd)))
-                           `(defun ,writer-name (nv obj)
-                              (declare (type ,name obj))
-                              (setf (,accessor obj) nv))))
+             (mapcar (lambda (slotd writer-name)
+                       (let ((accessor
+                              (slot-definition-defstruct-accessor-symbol
+                               slotd)))
+                         `(defun ,writer-name (nv obj)
+                            (declare (type ,name obj))
+                            (setf (,accessor obj) nv))))
                      direct-slots writer-names))
             (defstruct-form
               `(progn
                  ,defstruct
                  ,@readers-init ,@writers-init
-                 (declare-structure ',name nil nil))))
+                 (cons nil nil))))
        (unless (structure-type-p name) (eval defstruct-form))
        (mapc #'(lambda (dslotd reader-name writer-name)
                  (let* ((reader (gdefinition reader-name))
                         (writer (when (gboundp writer-name)
                                   (gdefinition writer-name))))
-                   (setf (slot-value dslotd 'internal-reader-function) reader)
-                   (setf (slot-value dslotd 'internal-writer-function) writer)))
+                   (setf (slot-value dslotd 'internal-reader-function)
+                         reader)
+                   (setf (slot-value dslotd 'internal-writer-function)
+                         writer)))
              direct-slots reader-names writer-names)
        (setf (slot-value class 'defstruct-form) defstruct-form)
        (setf (slot-value class 'defstruct-constructor) constructor))))
              (wrapper-instance-slots-layout owrapper))
        (setf (wrapper-class-slots nwrapper)
              (wrapper-class-slots owrapper))
-       (without-interrupts
+       (sb-sys:without-interrupts
          (update-lisp-class-layout class nwrapper)
          (setf (slot-value class 'wrapper) nwrapper)
          (invalidate-wrapper owrapper ':flush nwrapper))))))
            (wrapper-instance-slots-layout owrapper))
       (setf (wrapper-class-slots nwrapper)
            (wrapper-class-slots owrapper))
-      (without-interrupts
+      (sb-sys:without-interrupts
        (update-lisp-class-layout class nwrapper)
        (setf (slot-value class 'wrapper) nwrapper)
        (invalidate-wrapper owrapper ':obsolete nwrapper)
      (format stream
             "obsolete structure error in ~S:~@
              for a structure of type: ~S"
-            (sb-conditions::condition-function-name condition)
+            (sb-kernel::condition-function-name condition)
             (type-of (obsolete-structure-datum condition))))))
 
 (defun obsolete-instance-trap (owrapper nwrapper instance)
                  (opos (interval :from 0)))
          (let ((npos (posq name nlayout)))
            (if npos
-               (setf (instance-ref nslots npos) (instance-ref oslots opos))
+               (setf (clos-slots-ref nslots npos)
+                     (clos-slots-ref oslots opos))
                (progn
                  (push name discarded)
-                 (unless (eq (instance-ref oslots opos) *slot-unbound*)
-                   (setf (getf plist name) (instance-ref oslots opos)))))))
+                 (unless (eq (clos-slots-ref oslots opos) +slot-unbound+)
+                   (setf (getf plist name) (clos-slots-ref oslots opos)))))))
 
        ;; Go through all the old shared slots.
        (iterate ((oclass-slot-and-val (list-elements oclass-slots)))
                (val (cdr oclass-slot-and-val)))
            (let ((npos (posq name nlayout)))
              (if npos
-                 (setf (instance-ref nslots npos) (cdr oclass-slot-and-val))
+                 (setf (clos-slots-ref nslots npos) (cdr oclass-slot-and-val))
                  (progn (push name discarded)
-                        (unless (eq val *slot-unbound*)
+                        (unless (eq val +slot-unbound+)
                           (setf (getf plist name) val)))))))
 
        ;; Go through all the new local slots to compute the added slots.
              (new-position (interval :from 0)))
       (let ((old-position (posq new-slot old-layout)))
        (when old-position
-         (setf (instance-ref new-slots new-position)
-               (instance-ref old-slots old-position)))))
+         (setf (clos-slots-ref new-slots new-position)
+               (clos-slots-ref old-slots old-position)))))
 
     ;; "The values of slots specified as shared in the class CFROM and
     ;; as local in the class CTO are retained."
     (iterate ((slot-and-val (list-elements old-class-slots)))
       (let ((position (posq (car slot-and-val) new-layout)))
        (when position
-         (setf (instance-ref new-slots position) (cdr slot-and-val)))))
+         (setf (clos-slots-ref new-slots position) (cdr slot-and-val)))))
 
     ;; Make the copy point to the old instance's storage, and make the
     ;; old instance point to the new storage.