X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fgc.lisp;h=7945c279a07079251bf04adb1524fa591ddf2371;hb=8cad02355db787b9f077b77f508329550ccd0db6;hp=fbd4e4bed87d84c758e0ece56a500e48c795ab06;hpb=bfb7c2d573bacfd9c5f3f243b7c1589f81f11406;p=sbcl.git diff --git a/src/code/gc.lisp b/src/code/gc.lisp index fbd4e4b..7945c27 100644 --- a/src/code/gc.lisp +++ b/src/code/gc.lisp @@ -121,6 +121,7 @@ (gc-on) (gc) (setf *n-bytes-freed-or-purified* 0 + *gc-run-time* 0 ;; See comment in interr.lisp *heap-exhausted-error-condition* (make-condition 'heap-exhausted-error))) @@ -180,7 +181,7 @@ run in any thread.") (sb!thread:make-mutex :name "GC lock") "ID of thread running SUB-GC") (defun sub-gc (&key (gen 0)) - (unless (eq sb!thread:*current-thread* + (unless (eq sb!thread:*current-thread* (sb!thread::mutex-value *already-in-gc*)) ;; With gencgc, unless *GC-PENDING* every allocation in this ;; function triggers another gc, potentially exceeding maximum @@ -219,7 +220,7 @@ run in any thread.") ;; from the outermost SUB-GC? ;; ;; KLUDGE: Don't run the hooks in GC's triggered by dying threads, - ;; so that user-code never runs with + ;; so that user-code never runs with ;; (thread-alive-p *current-thread*) => nil ;; The long-term solution will be to keep a separate thread for ;; finalizers and after-gc hooks.