- (dolist (x `(("cons cells" . ,conses)
- ("symbols" . ,symbols)
- ("markers" . ,markers)
- ("floats" . ,floats)
- ("intervals" . ,intervals)
- ("string headers" . ,strings)))
- (insert (format "\t%s (+ %s dead) in %s\n"
- (memory-usage-format (cadr x))
- (memory-usage-format (cddr x))
- (car x))))
- (insert (format "\t%s of string chars\n" (memory-usage-format chars)))
- (insert (format "\t%s of vector slots\n" (memory-usage-format vectors)))
- (let ((live (+ (car conses)
- (car symbols)
- (car markers)
- (car floats)
- (car intervals)
- (car strings)
- chars
- vectors))
- (dead (+ (cdr conses)
- (cdr symbols)
- (cdr markers)
- (cdr floats)
- (cdr intervals)
- (cdr strings))))
+ (let ((live 0)
+ (dead 0))
+ (dolist (x gc-stats)
+ (let* ((size (nth 1 x))
+ (xlive (* size (nth 2 x)))
+ (xdead (if (nth 3 x) (* size (nth 3 x)))))
+ (insert (if xdead
+ (format "\t%s (+ %s dead) in %s\n"
+ (memory-usage-format xlive)
+ (memory-usage-format xdead)
+ (car x))
+ (format "\t%s in %s\n"
+ (memory-usage-format xlive)
+ (car x))))
+ (setq live (+ live xlive))
+ (if xdead (setq dead (+ dead xdead)))))