X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fgc.lisp;h=1acfa9cce24a680c8f9f171ff249902b3b684a54;hb=94ea2b2082deaa0331dfb66fa6af6ca12dd8dc83;hp=f90150fb9030cdbe0f44ab5b1d77f5bd992d0031;hpb=5e4205cf17c3a04d4a8f6aed55c28b5a338caf47;p=sbcl.git diff --git a/src/code/gc.lisp b/src/code/gc.lisp index f90150f..1acfa9c 100644 --- a/src/code/gc.lisp +++ b/src/code/gc.lisp @@ -208,8 +208,8 @@ environment these hooks may run in any thread.") (sb!thread:make-mutex :name "GC lock") "ID of thread running SUB-GC") (defun sub-gc (&key (gen 0)) - (unless (eql (sb!thread:current-thread-id) - (sb!thread::mutex-value *already-in-gc*)) + (unless (eq sb!thread:*current-thread* + (sb!thread::mutex-value *already-in-gc*)) ;; With gencgc, unless *NEED-TO-COLLECT-GARBAGE* every allocation ;; in this function triggers another gc, potentially exceeding ;; maximum interrupt nesting. @@ -235,8 +235,7 @@ environment these hooks may run in any thread.") ;; current belief is that it is part of the normal order ;; of things and not a bug. (when (plusp freed) - (incf *n-bytes-freed-or-purified* freed))) - (sb!thread::reap-dead-threads))) + (incf *n-bytes-freed-or-purified* freed))))) ;; Outside the mutex, these may cause another GC. FIXME: it can ;; potentially exceed maximum interrupt nesting by triggering ;; GCs. @@ -298,4 +297,3 @@ environment these hooks may run in any thread.") "Disable the garbage collector." (setq *gc-inhibit* 1) nil) -