Skip to content

Commit a3fd424

Browse files
author
Thomas Schatzl
committed
8365115: G1: Refactor rem set statistics gather code for group
Reviewed-by: kbarrett, ayang
1 parent f61b247 commit a3fd424

File tree

1 file changed

+27
-32
lines changed

1 file changed

+27
-32
lines changed

src/hotspot/share/gc/g1/g1RemSetSummary.cpp

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -268,44 +268,39 @@ class G1HeapRegionStatsClosure: public G1HeapRegionClosure {
268268
return false;
269269
}
270270

271-
void do_cset_groups() {
272-
G1CollectedHeap* g1h = G1CollectedHeap::heap();
273-
G1CSetCandidateGroup* young_only_cset_group = g1h->young_regions_cset_group();
274-
271+
void accumulate_stats_for_group(G1CSetCandidateGroup* group, G1PerRegionTypeRemSetCounters* gen_counter) {
275272
// If the group has only a single region, then stats were accumulated
276-
// during region iteration.
277-
if (young_only_cset_group->length() > 1) {
278-
G1CardSet* young_only_card_set = young_only_cset_group->card_set();
279-
size_t rs_mem_sz = young_only_card_set->mem_size();
280-
size_t rs_unused_mem_sz = young_only_card_set->unused_mem_size();
281-
size_t occupied_cards = young_only_card_set->occupied();
282-
283-
_max_group_cardset_mem_sz = rs_mem_sz;
284-
_max_cardset_mem_sz_group = young_only_cset_group;
285-
286-
// Only update cardset details
287-
_young.add(rs_unused_mem_sz, rs_mem_sz, occupied_cards, 0, 0, false);
273+
// during region iteration. Skip these.
274+
if (group->length() > 1) {
275+
G1CardSet* card_set = group->card_set();
276+
277+
size_t rs_mem_sz = card_set->mem_size();
278+
size_t rs_unused_mem_sz = card_set->unused_mem_size();
279+
size_t occupied_cards = card_set->occupied();
280+
281+
if (rs_mem_sz > _max_group_cardset_mem_sz) {
282+
_max_group_cardset_mem_sz = rs_mem_sz;
283+
_max_cardset_mem_sz_group = group;
284+
}
285+
286+
gen_counter->add(rs_unused_mem_sz, rs_mem_sz, occupied_cards, 0, 0, false);
288287
_all.add(rs_unused_mem_sz, rs_mem_sz, occupied_cards, 0, 0, false);
289288
}
289+
}
290290

291+
void do_cset_groups() {
292+
G1CollectedHeap* g1h = G1CollectedHeap::heap();
291293

292-
G1PerRegionTypeRemSetCounters* current = &_old;
293-
for (G1CSetCandidateGroup* group : g1h->policy()->candidates()->from_marking_groups()) {
294-
if (group->length() > 1) {
295-
G1CardSet* group_card_set = group->card_set();
296-
size_t rs_mem_sz = group_card_set->mem_size();
297-
size_t rs_unused_mem_sz = group_card_set->unused_mem_size();
298-
size_t occupied_cards = group_card_set->occupied();
299-
300-
if (rs_mem_sz > _max_group_cardset_mem_sz) {
301-
_max_group_cardset_mem_sz = rs_mem_sz;
302-
_max_cardset_mem_sz_group = group;
303-
}
294+
accumulate_stats_for_group(g1h->young_regions_cset_group(), &_young);
304295

305-
// Only update cardset details
306-
_old.add(rs_unused_mem_sz, rs_mem_sz, occupied_cards, 0, 0, false);
307-
_all.add(rs_unused_mem_sz, rs_mem_sz, occupied_cards, 0, 0, false);
308-
}
296+
G1CollectionSetCandidates* candidates = g1h->policy()->candidates();
297+
for (G1CSetCandidateGroup* group : candidates->from_marking_groups()) {
298+
accumulate_stats_for_group(group, &_old);
299+
}
300+
// Skip gathering statistics for retained regions. Just verify that they have
301+
// the expected amount of regions.
302+
for (G1CSetCandidateGroup* group : candidates->retained_groups()) {
303+
assert(group->length() == 1, "must be");
309304
}
310305
}
311306

0 commit comments

Comments
 (0)