From 90a43c010ba1a313d4cb5b41c89a9d40d7497a26 Mon Sep 17 00:00:00 2001 From: Mark Probst Date: Tue, 12 May 2015 14:16:06 -0700 Subject: [PATCH] [sgen] Make pinning stats operational again. --- mono/sgen/sgen-gc.c | 4 ++++ mono/sgen/sgen-pinning-stats.c | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/mono/sgen/sgen-gc.c b/mono/sgen/sgen-gc.c index 59d1c0febd2..5d8cb5db3fe 100644 --- a/mono/sgen/sgen-gc.c +++ b/mono/sgen/sgen-gc.c @@ -1585,6 +1585,8 @@ collect_nursery (SgenGrayQueue *unpin_queue, gboolean finish_up_concurrent_mark) time_minor_scan_remsets += TV_ELAPSED (atv, btv); SGEN_LOG (2, "Old generation scan: %ld usecs", TV_ELAPSED (atv, btv)); + sgen_pin_stats_print_class_stats (); + sgen_drain_gray_stack (-1, ctx); /* FIXME: Why do we do this at this specific, seemingly random, point? */ @@ -1906,6 +1908,8 @@ major_copy_or_mark_from_roots (size_t *old_next_pin_slot, CopyOrMarkFromRootsMod TV_GETTIME (atv); time_major_scan_mod_union += TV_ELAPSED (btv, atv); } + + sgen_pin_stats_print_class_stats (); } static void diff --git a/mono/sgen/sgen-pinning-stats.c b/mono/sgen/sgen-pinning-stats.c index 31372839840..df25033acb8 100644 --- a/mono/sgen/sgen-pinning-stats.c +++ b/mono/sgen/sgen-pinning-stats.c @@ -84,6 +84,8 @@ sgen_pin_stats_reset (void) for (i = 0; i < PIN_TYPE_MAX; ++i) pinned_byte_counts [i] = 0; sgen_pointer_queue_clear (&pinned_objects); + sgen_hash_table_clean (&pinned_class_hash_table); + sgen_hash_table_clean (&global_remset_class_hash_table); } void @@ -206,19 +208,24 @@ sgen_pin_stats_print_class_stats (void) if (!do_pin_stats) return; - g_print ("\n%-50s %10s %10s %10s\n", "Class", "Stack", "Static", "Other"); + mono_gc_printf (gc_debug_file, "\n%-50s %10s %10s %10s\n", "Class", "Stack", "Static", "Other"); SGEN_HASH_TABLE_FOREACH (&pinned_class_hash_table, name, pinned_entry) { int i; - g_print ("%-50s", name); + mono_gc_printf (gc_debug_file, "%-50s", name); for (i = 0; i < PIN_TYPE_MAX; ++i) - g_print (" %10ld", pinned_entry->num_pins [i]); - g_print ("\n"); + mono_gc_printf (gc_debug_file, " %10ld", pinned_entry->num_pins [i]); + mono_gc_printf (gc_debug_file, "\n"); } SGEN_HASH_TABLE_FOREACH_END; - g_print ("\n%-50s %10s\n", "Class", "#Remsets"); + mono_gc_printf (gc_debug_file, "\n%-50s %10s\n", "Class", "#Remsets"); SGEN_HASH_TABLE_FOREACH (&global_remset_class_hash_table, name, remset_entry) { - g_print ("%-50s %10ld\n", name, remset_entry->num_remsets); + mono_gc_printf (gc_debug_file, "%-50s %10ld\n", name, remset_entry->num_remsets); } SGEN_HASH_TABLE_FOREACH_END; + + mono_gc_printf (gc_debug_file, "\nTotal bytes pinned from stack: %ld static: %ld other: %ld\n", + pinned_byte_counts [PIN_TYPE_STACK], + pinned_byte_counts [PIN_TYPE_STATIC_DATA], + pinned_byte_counts [PIN_TYPE_OTHER]); } size_t -- 2.25.1