diff options
author | ivmai <ivmai> | 2009-09-16 09:08:33 +0000 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2011-07-26 21:06:46 +0400 |
commit | 8494af7a5e30a4129756de579e024cd0cfb46718 (patch) | |
tree | 086dfe431202ba4620bd3694fc889cd67ba5fc9e /finalize.c | |
parent | 41cf316c7387d9f09a0be4680de44008f4e5d488 (diff) | |
download | bdwgc-8494af7a5e30a4129756de579e024cd0cfb46718.tar.gz |
2009-09-16 Ivan Maidanski <ivmai@mail.ru>
(ivmai127.diff - superseding diff49)
* alloc.c (GC_finish_collection): Call GC_print_finalization_stats
if GC_print_stats (after getting "done_time").
* finalize.c (GC_old_dl_entries): New static variable (only if not
SMALL_CONFIG).
* finalize.c (GC_finalize): Save current GC_dl_entries value (only
if not SMALL_CONFIG).
* finalize.c (GC_print_finalization_stats): Define if and only if
not SMALL_CONFIG; use GC_old_dl_entries value; use GC_log_printf()
instead of GC_printf(); use "%lu" (instead of "%u") print format
specifier; use unsigned long type for "ready" counter (for LP64
targets).
* misc.c (GC_dump): No longer call GC_print_finalization_stats()
here (since it is called from GC_finish_collection()).
* misc.c (STACKBASE): Remove unused macro undef (for NOSYS and
ECOS).
Diffstat (limited to 'finalize.c')
-rw-r--r-- | finalize.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -459,6 +459,10 @@ void GC_dump_finalization(void) } #endif +#ifndef SMALL_CONFIG + STATIC word GC_old_dl_entries; /* for stats printing */ +#endif + extern unsigned GC_fail_count; /* How many consecutive GC/expansion failures? */ /* Reset by GC_allochblk(); defined in alloc.c. */ @@ -505,6 +509,11 @@ void GC_finalize(void) size_t dl_size = (log_dl_table_size == -1 ) ? 0 : (1 << log_dl_table_size); size_t fo_size = (log_fo_table_size == -1 ) ? 0 : (1 << log_fo_table_size); +# ifndef SMALL_CONFIG + /* Save current GC_dl_entries value for stats printing */ + GC_old_dl_entries = GC_dl_entries; +# endif + /* Make disappearing links disappear */ for (i = 0; i < dl_size; i++) { curr_dl = dl_head[i]; @@ -897,17 +906,20 @@ GC_API void * GC_CALL GC_call_with_alloc_lock(GC_fn_type fn, return(result); } -#if !defined(NO_DEBUGGING) +#ifndef SMALL_CONFIG void GC_print_finalization_stats(void) { struct finalizable_object *fo = GC_finalize_now; - unsigned ready = 0; + unsigned long ready = 0; - GC_printf("%u finalization table entries; %u disappearing links\n", - (unsigned)GC_fo_entries, (unsigned)GC_dl_entries); + GC_log_printf( + "%lu finalization table entries; %lu disappearing links alive\n", + (unsigned long)GC_fo_entries, (unsigned long)GC_dl_entries); for (; 0 != fo; fo = fo_next(fo)) ++ready; - GC_printf("%u objects are eligible for immediate finalization\n", ready); + GC_log_printf("%lu objects are eligible for immediate finalization; " + "%ld links cleared\n", + ready, (long)GC_old_dl_entries - (long)GC_dl_entries); } -#endif /* NO_DEBUGGING */ +#endif /* SMALL_CONFIG */ |