From a7f999dc5f002030c9a4c648f7017acf11274b1d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 4 Jun 2014 14:46:51 +0300 Subject: [PATCH] Improve dumped memory report on MS-Windows. src/w32heap.c (report_temacs_memory_usage): Improve the report by reporting the large blocks that are actually occupied at dump time. --- src/ChangeLog | 4 ++++ src/w32heap.c | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7903a0f503..424a828e1f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2014-06-04 Eli Zaretskii + * w32heap.c (report_temacs_memory_usage): Improve the report by + reporting the large blocks that are actually occupied at dump + time. + * w32console.c (initialize_w32_display): Set the console menu_show_hook, otherwise TTY menus are broken on w32. diff --git a/src/w32heap.c b/src/w32heap.c index 011bffdc9a..8c547ff646 100644 --- a/src/w32heap.c +++ b/src/w32heap.c @@ -479,7 +479,7 @@ free_before_dump (void *ptr) /* Look for the big chunk. */ int i; - for(i = 0; i < blocks_number; i++) + for (i = 0; i < blocks_number; i++) { if (blocks[i].address == ptr) { @@ -498,11 +498,22 @@ free_before_dump (void *ptr) void report_temacs_memory_usage (void) { + DWORD blocks_used = 0, large_mem_used = 0; + int i; + + for (i = 0; i < blocks_number; i++) + if (blocks[i].occupied) + { + blocks_used++; + large_mem_used += blocks[i].size; + } + /* Emulate 'message', which writes to stderr in non-interactive sessions. */ fprintf (stderr, - "Dump memory usage: Heap: %" PRIu64 " Large blocks(%lu): %" PRIu64 "\n", - (unsigned long long)committed, blocks_number, + "Dump memory usage: Heap: %" PRIu64 " Large blocks(%lu/%lu): %" PRIu64 "/%" PRIu64 "\n", + (unsigned long long)committed, blocks_used, blocks_number, + (unsigned long long)large_mem_used, (unsigned long long)(dumped_data + DUMPED_HEAP_SIZE - bc_limit)); } #endif -- 2.39.2