[sgen] Write binary protocol for card scan before scanning the card.
authorMark Probst <mark.probst@gmail.com>
Thu, 5 Feb 2015 21:15:09 +0000 (13:15 -0800)
committerMark Probst <mark.probst@gmail.com>
Thu, 2 Apr 2015 23:41:26 +0000 (16:41 -0700)
mono/metadata/sgen-marksweep.c

index 625c803d918dbba054208aec3057ce4356f71aed..170f5adb297a4738d4c07e24c8a52aec9cb0ac67 100644 (file)
@@ -2201,6 +2201,8 @@ scan_card_table_for_block (MSBlockInfo *block, gboolean mod_union, ScanObjectFun
 
                obj = first_obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, first_object_index);
 
+               binary_protocol_card_scan (first_obj, end - first_obj);
+
                while (obj < end) {
                        if (obj < scan_front || !MS_OBJ_ALLOCED_FAST (obj, block_start))
                                goto next_object;
@@ -2227,7 +2229,6 @@ scan_card_table_for_block (MSBlockInfo *block, gboolean mod_union, ScanObjectFun
                }
 
                HEAVY_STAT (if (*card_data) ++remarked_cards);
-               binary_protocol_card_scan (first_obj, obj - first_obj);
 
                if (small_objects)
                        ++card_data;