Warn when wrapping constants with THE of multiple value types
[sbcl.git] / src / pcl / dfun.lisp
index 86019d2..05aace9 100644 (file)
@@ -1441,7 +1441,8 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
 
         ;; if we can finalize an unfinalized class, then do so
         (when (and (not (class-finalized-p class))
-                   (not (class-has-a-forward-referenced-superclass-p class)))
+                   (not (class-has-a-forward-referenced-superclass-p class))
+                   (not (class-has-a-cpl-protocol-violation-p class)))
           (finalize-inheritance class)
           (class-precedence-list class)))
 
@@ -1700,10 +1701,6 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
       ;; are part of this same code path (done while the lock is held),
       ;; which we AVER.
       ;;
-      ;; FIXME: When our mutexes are smart about the need to wake up
-      ;; sleepers we can put a mutex here instead -- but in the meantime
-      ;; we use a spinlock to avoid a syscall for every dfun update.
-      ;;
       ;; KLUDGE: No need to lock during bootstrap.
       (if early-p
           (update)
@@ -1712,7 +1709,7 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
             ;; where we can end up in a metacircular loop here? In
             ;; case there are, better fetch it while interrupts are
             ;; still enabled...
-            (sb-thread::call-with-recursive-system-spinlock #'update lock))))))
+            (sb-thread::call-with-recursive-system-lock #'update lock))))))
 \f
 (defvar *dfun-count* nil)
 (defvar *dfun-list* nil)