Mercurial > hg > xemacs-beta
comparison src/lrecord.h @ 5158:9e0b43d3095c
more cleanups to object-memory-usage stuff
-------------------- ChangeLog entries follow: --------------------
lisp/ChangeLog addition:
2010-03-19 Ben Wing <ben@xemacs.org>
* diagnose.el (show-object-memory-usage-stats):
Rewrite to take into account non-lisp-storage statistics
returned by garbage-collect-1 and friends.
src/ChangeLog addition:
2010-03-19 Ben Wing <ben@xemacs.org>
* alloc.c:
* alloc.c (struct):
* alloc.c (tick_lrecord_stats):
* alloc.c (gc_sweep_1):
* alloc.c (finish_object_memory_usage_stats):
* alloc.c (object_memory_usage_stats):
* alloc.c (compute_memusage_stats_length):
Call new memory-usage mechanism at sweep time to compute extra
memory utilization for all objects. Add up the values element-by-
element to get an aggregrate set of statistics, where each is the
sum of the values of a single statistic across different objects
of the same type. At end of sweep time, call
finish_object_memory_usage_stats() to add up all the aggreggrate
stats that are related to non-Lisp memory storage to compute
a single value, and add it to the list of values returned by
`garbage-collect' and `object-memory-usage-stats'.
* buffer.c (compute_buffer_text_usage):
Don't crash on buffers without text (killed buffers?) and don't
double-count indirect buffers.
* elhash.c:
* elhash.c (hash_table_objects_create):
* elhash.c (vars_of_elhash):
* symsinit.h:
Add memory-usage method to count the size of `hentries'.
* emacs.c (main_1):
Call new functions in elhash.c, frame.c at init.
* frame.c:
* frame.c (compute_frame_usage):
* frame.c (frame_memory_usage):
* frame.c (frame_objects_create):
* symsinit.h:
Add memory-usage method to count gutter display structures,
subwindow exposures.
* gc.c (gc_finish):
* lisp.h:
Declare finish_object_memory_usage_stats(), call it in gc_finish().
* lrecord.h (struct lrecord_implementation):
* lrecord.h (INIT_MEMORY_USAGE_STATS):
New value in implementation struct to track number of non-Lisp-memory
statistics. Computed in alloc.c.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Fri, 19 Mar 2010 14:47:44 -0500 |
parents | 1fae11d56ad2 |
children | ab9ee10a53e4 |
comparison
equal
deleted
inserted
replaced
5157:1fae11d56ad2 | 5158:9e0b43d3095c |
---|---|
542 /* Number of additional type-specific statistics related to memory usage. | 542 /* Number of additional type-specific statistics related to memory usage. |
543 Automatically calculated (see compute_memusage_stats_length()) based | 543 Automatically calculated (see compute_memusage_stats_length()) based |
544 on the value placed in `memusage_stats_list'. */ | 544 on the value placed in `memusage_stats_list'. */ |
545 Elemcount num_extra_memusage_stats; | 545 Elemcount num_extra_memusage_stats; |
546 | 546 |
547 /* Number of additional type-specific statistics related to | |
548 non-Lisp-Object memory usage for this object. Automatically | |
549 calculated (see compute_memusage_stats_length()) based on the value | |
550 placed in `memusage_stats_list'. */ | |
551 Elemcount num_extra_nonlisp_memusage_stats; | |
552 | |
547 /* List of tags to be given to the extra statistics, one per statistic. | 553 /* List of tags to be given to the extra statistics, one per statistic. |
548 Qnil or Qt can be present to separate off different slices. Qnil | 554 Qnil or Qt can be present to separate off different slices. Qnil |
549 separates different slices within the same type of statistics. | 555 separates different slices within the same type of statistics. |
550 Qt separates slices corresponding to different types of statistics. | 556 Qt separates slices corresponding to different types of statistics. |
551 If Qt is not present, all slices describe extra non-Lisp-Object memory | 557 If Qt is not present, all slices describe extra non-Lisp-Object memory |
1418 { \ | 1424 { \ |
1419 lrecord_implementations_table[lrecord_type_##type]-> \ | 1425 lrecord_implementations_table[lrecord_type_##type]-> \ |
1420 memusage_stats_list = Qnil; \ | 1426 memusage_stats_list = Qnil; \ |
1421 lrecord_implementations_table[lrecord_type_##type]-> \ | 1427 lrecord_implementations_table[lrecord_type_##type]-> \ |
1422 num_extra_memusage_stats = -1; \ | 1428 num_extra_memusage_stats = -1; \ |
1429 lrecord_implementations_table[lrecord_type_##type]-> \ | |
1430 num_extra_nonlisp_memusage_stats = -1; \ | |
1423 staticpro (&lrecord_implementations_table[lrecord_type_##type]-> \ | 1431 staticpro (&lrecord_implementations_table[lrecord_type_##type]-> \ |
1424 memusage_stats_list); \ | 1432 memusage_stats_list); \ |
1425 } while (0) | 1433 } while (0) |
1426 #else | 1434 #else |
1427 #define INIT_MEMORY_USAGE_STATS(type) DO_NOTHING | 1435 #define INIT_MEMORY_USAGE_STATS(type) DO_NOTHING |