X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdfun.lisp;h=35e9fba09f208382d44e0093cb5cb1c98201e879;hb=23e8ed407c99d1b26465acc0aa61c1c88cc81893;hp=be3c1638040298f49afd4d837f5f35d3e005b7d0;hpb=6e9a41e3ec4205f3a6e02ba50ff36f4159a3dfd9;p=sbcl.git diff --git a/src/pcl/dfun.lisp b/src/pcl/dfun.lisp index be3c163..35e9fba 100644 --- a/src/pcl/dfun.lisp +++ b/src/pcl/dfun.lisp @@ -1579,7 +1579,7 @@ Except see also BREAK-VICIOUS-METACIRCLE. -- CSR, 2003-05-28 nil)) ;;; Not synchronized, as all the uses we have for it are multiple ones -;;; and need WITH-LOCKED-HASH-TABLE in any case. +;;; and need WITH-LOCKED-SYSTEM-TABLE in any case. ;;; ;;; FIXME: Is it really more efficient to store this stuff in a global ;;; table instead of having a slot in each method? @@ -1590,7 +1590,7 @@ Except see also BREAK-VICIOUS-METACIRCLE. -- CSR, 2003-05-28 (defun flush-effective-method-cache (generic-function) (let ((cache *effective-method-cache*)) - (with-locked-hash-table (cache) + (with-locked-system-table (cache) (dolist (method (generic-function-methods generic-function)) (remhash method cache))))) @@ -1615,7 +1615,7 @@ Except see also BREAK-VICIOUS-METACIRCLE. -- CSR, 2003-05-28 (call-no-applicable-method gf args))) (let* ((key (car methods)) (ht *effective-method-cache*) - (ht-value (with-locked-hash-table (ht) + (ht-value (with-locked-system-table (ht) (or (gethash key ht) (setf (gethash key ht) (cons nil nil)))))) (if (and (null (cdr methods)) all-applicable-p ; the most common case @@ -1700,10 +1700,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 +1708,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)))))) (defvar *dfun-count* nil) (defvar *dfun-list* nil)