[Openmcl-cvs-notifications] r12710 - /trunk/source/lib/misc.lisp
gb at clozure.com
gb at clozure.com
Fri Aug 28 06:18:59 EDT 2009
Author: gb
Date: Fri Aug 28 06:18:59 2009
New Revision: 12710
Log:
Make HEAP-UTILIZATION track (and REPORT-HEAP-UTILIZATION report) the physic=
al
size of uvectors (including headers and alignment overhead) as well as their
logical sizes.
Summarize total logical, physical sizes in REPORT-HEAP-UTILIZATION.
Modified:
trunk/source/lib/misc.lisp
Modified: trunk/source/lib/misc.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lib/misc.lisp (original)
+++ trunk/source/lib/misc.lisp Fri Aug 28 06:18:59 2009
@@ -894,19 +894,27 @@
(let* ((nconses 0)
(nvectors (make-array 256))
(vector-sizes (make-array 256))
+ (vector-physical-sizes (make-array 256))
(array-size-function (arch::target-array-data-size-function
(backend-target-arch *host-backend*))))
(declare (type (simple-vector 256) nvectors vector-sizes)
- (dynamic-extent nvectors vector-sizes))
+ (dynamic-extent nvectors vector-sizes vector-physical-sizes))
(when gc-first (gc))
(%map-areas (lambda (thing)
(if (listp thing)
(incf nconses)
- (let* ((typecode (typecode thing)))
+ (let* ((typecode (typecode thing))
+ (logsize (funcall array-size-function typecode =
(uvsize thing))))
(incf (aref nvectors typecode))
- (incf (aref vector-sizes typecode)
- (funcall array-size-function typecode (uvsize =
thing)))))))
- (report-heap-utilization stream nconses nvectors vector-sizes)
+ (incf (aref vector-sizes typecode) logsize)
+ (incf (aref vector-physical-sizes typecode)
+ (logandc2 (+ logsize
+ #+64-bit-target (+ 8 15)
+ #+32-bit-target (+ 4 7))
+ #+64-bit-target 15
+ #+32-bit-target 7))))))
+ =
+ (report-heap-utilization stream nconses nvectors vector-sizes vector-p=
hysical-sizes)
(values)))
=
(defvar *heap-utilization-vector-type-names*
@@ -953,14 +961,21 @@
=
=
=
-(defun report-heap-utilization (out nconses nvectors vector-sizes)
- (format out "~&Object type~42tCount~50tTotal Size in Bytes")
- (format out "~&CONS~36t~12d~48t~16d" nconses (* nconses target::cons.siz=
e))
- (dotimes (i (length nvectors))
- (let* ((count (aref nvectors i))
- (sizes (aref vector-sizes i)))
- (unless (zerop count)
- (format out "~&~a~36t~12d~48t~16d" (aref *heap-utilization-vector-=
type-names* i) count sizes)))))
+(defun report-heap-utilization (out nconses nvectors vector-sizes vector-p=
hysical-sizes)
+ (let* ((total-cons-size (* nconses target::cons.size))
+ (total-vector-size 0)
+ (total-physical-vector-size 0))
+ (format out "~&Object type~42tCount~50tTotal Size in Bytes~72tTotal Si=
ze")
+ (format out "~&CONS~36t~12d~48t~16d~16d" nconses total-cons-size total=
-cons-size)
+ (dotimes (i (length nvectors))
+ (let* ((count (aref nvectors i))
+ (sizes (aref vector-sizes i))
+ (psizes (aref vector-physical-sizes i)))
+ (unless (zerop count)
+ (incf total-vector-size sizes)
+ (incf total-physical-vector-size psizes)
+ (format out "~&~a~36t~12d~48t~16d~16d" (aref *heap-utilization-v=
ector-type-names* i) count sizes psizes))))
+ (format out "~& Total sizes: ~49t~16d~16d" (+ total-cons-size total-=
vector-size) (+ total-cons-size total-physical-vector-size))))
=
;; The number of words to allocate for static conses when the user requests
;; one and we don't have any left over
More information about the Openmcl-cvs-notifications
mailing list