X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-package.lisp;h=87f1da1c6db1de8454c6a849d709a986bf5a1601;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=7efbdff7931db4ed3563a6737234b31bbda320f9;hpb=8b44c2ab1f8608780991b5695b06bad59005fbb1;p=sbcl.git diff --git a/src/code/target-package.lisp b/src/code/target-package.lisp index 7efbdff..87f1da1 100644 --- a/src/code/target-package.lisp +++ b/src/code/target-package.lisp @@ -61,9 +61,6 @@ (declare (function function)) ;; FIXME: Since name conflicts can be signalled while holding the ;; mutex, user code can be run leading to lock ordering problems. - ;; - ;; This used to be a spinlock, but there it can be held for a long - ;; time while the debugger waits for user input. (sb!thread:with-recursive-lock (*package-graph-lock*) (funcall function))) @@ -75,7 +72,7 @@ (defmacro with-package-names ((names &key) &body body) `(let ((,names *package-names*)) - (with-locked-hash-table (,names) + (with-locked-system-table (,names) ,@body))) ;;;; PACKAGE-HASHTABLE stuff @@ -599,7 +596,7 @@ implementation it is ~S." *default-package-use-list*) (cerror "Clobber existing package." "A package named ~S already exists" name) (setf clobber t)) - (with-packages () + (with-package-graph () ;; Check for race, signal the error outside the lock. (when (and (not clobber) (find-package name)) (go :restart))