90 |
90 |
91 size_t index_for_cardvalue(CardValue const* p) const { |
91 size_t index_for_cardvalue(CardValue const* p) const { |
92 return pointer_delta(p, _byte_map, sizeof(CardValue)); |
92 return pointer_delta(p, _byte_map, sizeof(CardValue)); |
93 } |
93 } |
94 |
94 |
95 // Mark the given card as Dirty if it is Clean. |
95 // Mark the given card as Dirty if it is Clean. Returns the number of dirtied |
96 inline void mark_clean_as_dirty(size_t card_index); |
96 // cards that were not yet dirty. This result may be inaccurate as it does not |
|
97 // perform the dirtying atomically. |
|
98 inline size_t mark_clean_as_dirty(size_t card_index); |
97 |
99 |
98 // Change Clean cards in a (large) area on the card table as Dirty, preserving |
100 // Change Clean cards in a (large) area on the card table as Dirty, preserving |
99 // already scanned cards. Assumes that most cards in that area are Clean. |
101 // already scanned cards. Assumes that most cards in that area are Clean. |
100 inline void mark_region_dirty(size_t start_card_index, size_t num_cards); |
102 // Returns the number of dirtied cards that were not yet dirty. This result may |
|
103 // be inaccurate as it does not perform the dirtying atomically. |
|
104 inline size_t mark_region_dirty(size_t start_card_index, size_t num_cards); |
101 |
105 |
102 // Mark the given range of cards as Scanned. All of these cards must be Dirty. |
106 // Mark the given range of cards as Scanned. All of these cards must be Dirty. |
103 inline void mark_as_scanned(size_t start_card_index, size_t num_cards); |
107 inline void mark_as_scanned(size_t start_card_index, size_t num_cards); |
104 |
108 |
105 inline uint region_idx_for(CardValue* p); |
109 inline uint region_idx_for(CardValue* p); |