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