Index: /branches/working-0711/ccl/level-1/l1-clos.lisp
===================================================================
--- /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 7888)
+++ /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 7889)
@@ -1693,5 +1693,7 @@
   ;; obsolete instances.  This'll eventually call
   ;; UPDATE-INSTANCE-FOR-REDEFINED-CLASS if it needs to.
-  (let* ((wrapper (instance-class-wrapper instance))
+  (let* ((wrapper (if (eq (typecode instance) target::subtag-instance)
+                    (instance.class-wrapper instance)
+                    (instance-class-wrapper instance)))
          (class (%wrapper-class wrapper)))
     (when (eql 0 (%wrapper-hash-index wrapper)) ; obsolete
@@ -1796,5 +1798,6 @@
          (class (if (eq (typecode instance) target::subtag-instance)
                   (%class-of-instance instance))))
-    (if (and class (memq defining-class (%inited-class-cpl class)))
+    (if (and class (memq defining-class (or (%class.cpl class)
+                                            (%inited-class-cpl class))))
       (%slot-ref (instance.slots instance) location)
       (no-applicable-method (%gf-dispatch-table-gf dt) instance))))
@@ -1810,5 +1813,5 @@
          (class (if (eq (typecode instance) target::subtag-instance)
                   (%class-of-instance instance)))
-         (cpl (if class (%inited-class-cpl class))))
+         (cpl (if class (or (%class.cpl class) (%inited-class-cpl class)))))
     (if (dolist (defining-class (%svref dt %gf-dispatch-table-first-data))
           (when (memq defining-class cpl) (return t)))
