(let ((start-time (get-internal-run-time)))
(collect-garbage gen)
(setf *gc-epoch* (cons nil nil))
- (incf *gc-run-time*
- (- (get-internal-run-time) start-time)))
+ (let ((run-time (- (get-internal-run-time) start-time)))
+ ;; KLUDGE: Sometimes we see the second getrusage() call
+ ;; return a smaller value than the first, which can
+ ;; lead to *GC-RUN-TIME* to going negative, which in
+ ;; turn is a type-error.
+ (when (plusp run-time)
+ (incf *gc-run-time* run-time))))
(setf *gc-pending* nil
new-usage (dynamic-usage))
#!+sb-thread
(number-of-gcs int)
(number-of-gcs-before-promotion int)
(cum-sum-bytes-allocated unsigned-long)
- (minimum-age-before-gc double)))
+ (minimum-age-before-gc double)
+ ;; `struct lutex *' or `void *', depending.
+ (lutexes (* char))))
#!+gencgc
(define-alien-variable generations
(defun ,(symbolicate "GENERATION-" slot) (generation)
#!+sb-doc
,doc
+ #!+gencgc
(declare (generation-index generation))
#!-gencgc
(declare (ignore generation))
#!-gencgc
(error "~S is a GENCGC only function and unavailable in this build"
- ',name)
+ ',slot)
#!+gencgc
(slot (deref generations generation) ',slot))
,@(when setfp
`((defun (setf ,(symbolicate "GENERATION-" slot)) (value generation)
+ #!+gencgc
(declare (generation-index generation))
#!-gencgc
(declare (ignore value generation))
#!-gencgc
(error "(SETF ~S) is a GENCGC only function and unavailable in this build"
- ',name)
+ ',slot)
#!+gencgc
(setf (slot (deref generations generation) ',slot) value)))))))
(def bytes-consed-between-gcs
Available on GENCGC platforms only.
Experimental: interface subject to change."
+ #!+gencgc
(declare (generation-index generation))
#!-gencgc (declare (ignore generation))
#!-gencgc