0.6.11.10:
[sbcl.git] / src / pcl / vector.lisp
index dbf5fa8..4c72075 100644 (file)
 (defun pv-cache-limit-fn (nlines)
   (default-limit-fn nlines))
 
-(defstruct (pv-table
-            (:predicate pv-tablep)
-            (:constructor make-pv-table-internal
-                          (slot-name-lists call-list)))
+(defstruct (pv-table (:predicate pv-tablep)
+                    (:constructor make-pv-table-internal
+                                  (slot-name-lists call-list))
+                    (:copier nil))
   (cache nil :type (or cache null))
   (pv-size 0 :type fixnum)
   (slot-name-lists nil :type list)
          (when (or (not (eq *boot-state* 'complete))
                    (and class (not (class-finalized-p class))))
            (setq class nil))
-         (when (and class-name (not (eq class-name 't)))
+         (when (and class-name (not (eq class-name t)))
            (when (or (null type)
                      (not (and class
                                (memq *the-class-structure-object*
             (when parameter-or-nil
               (let* ((class-name (caddr (variable-declaration
                                          'class parameter-or-nil env))))
-                (when (and class-name (not (eq class-name 't)))
+                (when (and class-name (not (eq class-name t)))
                   (position parameter-or-nil slots :key #'car))))))
       (if (constantp form)
          (let ((form (eval form)))
          (let ((,index (pvref ,pv ,pv-offset)))
            (setq ,value (typecase ,index
                           ,@(when (or (null type) (eq type ':instance))
-                              `((fixnum (%instance-ref ,slots ,index))))
+                              `((fixnum (clos-slots-ref ,slots ,index))))
                           ,@(when (or (null type) (eq type ':class))
                               `((cons (cdr ,index))))
                           (t +slot-unbound+)))
          (let ((,index (pvref ,pv ,pv-offset)))
            (typecase ,index
              ,@(when (or (null type) (eq type ':instance))
-                 `((fixnum (setf (%instance-ref ,slots ,index) ,new-value))))
+                      `((fixnum (setf (clos-slots-ref ,slots ,index)
+                                     ,new-value))))
              ,@(when (or (null type) (eq type ':class))
                  `((cons (setf (cdr ,index) ,new-value))))
              (t ,default)))))))
          (let ((,index (pvref ,pv ,pv-offset)))
            (typecase ,index
              ,@(when (or (null type) (eq type ':instance))
-                 `((fixnum (not (eq (%instance-ref ,slots ,index)
-                                    +slot-unbound+)))))
+                 `((fixnum (not (and ,slots
+                                      (eq (clos-slots-ref ,slots ,index)
+                                          +slot-unbound+))))))
              ,@(when (or (null type) (eq type ':class))
                  `((cons (not (eq (cdr ,index) +slot-unbound+)))))
              (t ,default)))))))
         (w-t pv-wrappers))
     (dolist (arg args)
       (setq w (wrapper-of arg))
-      (unless (eq 't (wrapper-state w)) ; FIXME: should be INVALID-WRAPPER-P
+      (unless (eq t (wrapper-state w)) ; FIXME: should be INVALID-WRAPPER-P
        (setq w (check-wrapper-validity arg)))
       (setf (car w-t) w))
       (setq w-t (cdr w-t))