;; See comment in interr.lisp
*heap-exhausted-error-condition* (make-condition 'heap-exhausted-error)))
;; See comment in interr.lisp
*heap-exhausted-error-condition* (make-condition 'heap-exhausted-error)))
(sb!thread::mutex-value *already-in-gc*))
;; With gencgc, unless *GC-PENDING* every allocation in this
;; function triggers another gc, potentially exceeding maximum
(sb!thread::mutex-value *already-in-gc*))
;; With gencgc, unless *GC-PENDING* every allocation in this
;; function triggers another gc, potentially exceeding maximum
;; from the outermost SUB-GC?
;;
;; KLUDGE: Don't run the hooks in GC's triggered by dying threads,
;; from the outermost SUB-GC?
;;
;; KLUDGE: Don't run the hooks in GC's triggered by dying threads,
;; (thread-alive-p *current-thread*) => nil
;; The long-term solution will be to keep a separate thread for
;; finalizers and after-gc hooks.
;; (thread-alive-p *current-thread*) => nil
;; The long-term solution will be to keep a separate thread for
;; finalizers and after-gc hooks.