[sgen] Remove CARDTABLE_STATS
authorVlad Brezae <brezaevlad@gmail.com>
Thu, 2 Mar 2017 21:35:58 +0000 (23:35 +0200)
committerVlad Brezae <brezaevlad@gmail.com>
Thu, 30 Mar 2017 11:13:24 +0000 (14:13 +0300)
For dirty card counts we already have heavy counters. For card table scan time we already have the binary protocol which has more flexibility.

mono/sgen/sgen-cardtable.c
mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h

index 42a9101b1d66eb591e57be26164b5454e1dbe46f..471fff2353ddcb9299f3419d2e03744eccb013a4 100644 (file)
@@ -55,8 +55,6 @@ static guint64 los_card_scan_time;
 static guint64 last_major_scan_time;
 static guint64 last_los_scan_time;
 
-static void sgen_card_tables_collect_stats (gboolean begin);
-
 mword
 sgen_card_table_number_of_cards_in_range (mword address, mword size)
 {
@@ -416,20 +414,12 @@ sgen_card_table_clear_cards (void)
        sgen_wbroots_iterate_live_block_ranges (clear_cards);
 }
 
-static void
-sgen_card_table_finish_minor_collection (void)
-{
-       sgen_card_tables_collect_stats (FALSE);
-}
-
 static void
 sgen_card_table_scan_remsets (ScanCopyContext ctx)
 {
        SGEN_TV_DECLARE (atv);
        SGEN_TV_DECLARE (btv);
 
-       sgen_card_tables_collect_stats (TRUE);
-
 #ifdef SGEN_HAVE_OVERLAPPING_CARDS
        /*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
        /*First we copy*/
@@ -573,69 +563,6 @@ sgen_cardtable_scan_object (GCObject *obj, mword block_obj_size, guint8 *cards,
        binary_protocol_card_scan (obj, sgen_safe_object_get_size (obj));
 }
 
-#ifdef CARDTABLE_STATS
-
-typedef struct {
-       int total, marked, remarked, gc_marked; 
-} card_stats;
-
-static card_stats major_stats, los_stats;
-static card_stats *cur_stats;
-
-static void
-count_marked_cards (mword start, mword size)
-{
-       mword end = start + size;
-       while (start <= end) {
-               guint8 card = *sgen_card_table_get_card_address (start);
-               ++cur_stats->total;
-               if (card)
-                       ++cur_stats->marked;
-               if (card == 2)
-                       ++cur_stats->gc_marked;
-               start += CARD_SIZE_IN_BYTES;
-       }
-}
-
-static void
-count_remarked_cards (mword start, mword size)
-{
-       mword end = start + size;
-       while (start <= end) {
-               if (sgen_card_table_address_is_marked (start)) {
-                       ++cur_stats->remarked;
-                       *sgen_card_table_get_card_address (start) = 2;
-               }
-               start += CARD_SIZE_IN_BYTES;
-       }
-}
-
-#endif
-
-static void
-sgen_card_tables_collect_stats (gboolean begin)
-{
-#ifdef CARDTABLE_STATS
-       if (begin) {
-               memset (&major_stats, 0, sizeof (card_stats));
-               memset (&los_stats, 0, sizeof (card_stats));
-               cur_stats = &major_stats;
-               sgen_major_collector_iterate_live_block_ranges (count_marked_cards);
-               cur_stats = &los_stats;
-               sgen_los_iterate_live_block_ranges (count_marked_cards);
-       } else {
-               cur_stats = &major_stats;
-               sgen_major_collector_iterate_live_block_ranges (count_remarked_cards);
-               cur_stats = &los_stats;
-               sgen_los_iterate_live_block_ranges (count_remarked_cards);
-               printf ("cards major (t %d m %d g %d r %d)  los (t %d m %d g %d r %d) major_scan %.2fms los_scan %.2fms\n", 
-                       major_stats.total, major_stats.marked, major_stats.gc_marked, major_stats.remarked,
-                       los_stats.total, los_stats.marked, los_stats.gc_marked, los_stats.remarked,
-                       last_major_scan_time / 10000.0f, last_los_scan_time / 10000.0f);
-       }
-#endif
-}
-
 void
 sgen_card_table_init (SgenRememberedSet *remset)
 {
@@ -667,7 +594,6 @@ sgen_card_table_init (SgenRememberedSet *remset)
 
        remset->scan_remsets = sgen_card_table_scan_remsets;
 
-       remset->finish_minor_collection = sgen_card_table_finish_minor_collection;
        remset->clear_cards = sgen_card_table_clear_cards;
 
        remset->find_address = sgen_card_table_find_address;
index 08d5f45002dfbd07438171891374e2a4207b2128..a76440fce16e4b99d443c8d26b58a8d5307aceae 100644 (file)
@@ -1709,8 +1709,6 @@ collect_nursery (const char *reason, gboolean is_overflow, SgenGrayQueue *unpin_
 
        sgen_gray_object_queue_dispose (&gc_thread_gray_queue);
 
-       remset.finish_minor_collection ();
-
        check_scan_starts ();
 
        binary_protocol_flush_buffers (FALSE);
index 3a00ce3c7365dc3909391c86e108daba8ec0b01e..9f88578efce4891bff2b9d435838e0715171334c 100644 (file)
@@ -717,7 +717,6 @@ typedef struct _SgenRememberedSet {
 
        void (*clear_cards) (void);
 
-       void (*finish_minor_collection) (void);
        gboolean (*find_address) (char *addr);
        gboolean (*find_address_with_cards) (char *cards_start, guint8 *cards, char *addr);
 } SgenRememberedSet;