Skip to content

Commit ad51d06

Browse files
author
Ivan Walulya
committedNov 29, 2021
8277789: G1: G1CardSetConfiguration prefixes num_ and max_ used interchangeably
Reviewed-by: mli, tschatzl
1 parent 614c6e6 commit ad51d06

File tree

5 files changed

+51
-53
lines changed

5 files changed

+51
-53
lines changed
 

‎src/hotspot/share/gc/g1/g1Arguments.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ void G1Arguments::initialize_card_set_configuration() {
135135
uint region_size_log_mb = (uint)MAX2(HeapRegion::LogOfHRGrainBytes - LOG_M, 0);
136136

137137
if (FLAG_IS_DEFAULT(G1RemSetArrayOfCardsEntries)) {
138-
uint num_cards_in_inline_ptr = G1CardSetConfiguration::num_cards_in_inline_ptr(HeapRegion::LogOfHRGrainBytes - CardTable::card_shift);
139-
FLAG_SET_ERGO(G1RemSetArrayOfCardsEntries, MAX2(num_cards_in_inline_ptr * 2,
138+
uint max_cards_in_inline_ptr = G1CardSetConfiguration::max_cards_in_inline_ptr(HeapRegion::LogOfHRGrainBytes - CardTable::card_shift);
139+
FLAG_SET_ERGO(G1RemSetArrayOfCardsEntries, MAX2(max_cards_in_inline_ptr * 2,
140140
G1RemSetArrayOfCardsEntriesBase * (1u << (region_size_log_mb + 1))));
141141
}
142142

‎src/hotspot/share/gc/g1/g1CardSet.cpp

+24-24
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ static uint default_log2_card_region_per_region() {
5757

5858
G1CardSetConfiguration::G1CardSetConfiguration() :
5959
G1CardSetConfiguration(HeapRegion::LogCardsPerRegion, /* inline_ptr_bits_per_card */
60-
G1RemSetArrayOfCardsEntries, /* num_cards_in_array */
60+
G1RemSetArrayOfCardsEntries, /* max_cards_in_array */
6161
(double)G1RemSetCoarsenHowlBitmapToHowlFullPercent / 100, /* cards_in_bitmap_threshold_percent */
6262
G1RemSetHowlNumBuckets, /* num_buckets_in_howl */
6363
(double)G1RemSetCoarsenHowlToFullPercent / 100, /* cards_in_howl_threshold_percent */
@@ -68,39 +68,39 @@ G1CardSetConfiguration::G1CardSetConfiguration() :
6868
"inconsistent heap region virtualization setup");
6969
}
7070

71-
G1CardSetConfiguration::G1CardSetConfiguration(uint num_cards_in_array,
71+
G1CardSetConfiguration::G1CardSetConfiguration(uint max_cards_in_array,
7272
double cards_in_bitmap_threshold_percent,
7373
uint max_buckets_in_howl,
7474
double cards_in_howl_threshold_percent,
7575
uint max_cards_in_card_set,
7676
uint log2_card_region_per_region) :
7777
G1CardSetConfiguration(log2i_exact(max_cards_in_card_set), /* inline_ptr_bits_per_card */
78-
num_cards_in_array, /* num_cards_in_array */
78+
max_cards_in_array, /* max_cards_in_array */
7979
cards_in_bitmap_threshold_percent, /* cards_in_bitmap_threshold_percent */
8080
G1CardSetHowl::num_buckets(max_cards_in_card_set, /* num_buckets_in_howl */
81-
num_cards_in_array,
81+
max_cards_in_array,
8282
max_buckets_in_howl),
8383
cards_in_howl_threshold_percent, /* cards_in_howl_threshold_percent */
8484
max_cards_in_card_set, /* max_cards_in_cardset */
8585
log2_card_region_per_region)
8686
{ }
8787

8888
G1CardSetConfiguration::G1CardSetConfiguration(uint inline_ptr_bits_per_card,
89-
uint num_cards_in_array,
89+
uint max_cards_in_array,
9090
double cards_in_bitmap_threshold_percent,
9191
uint num_buckets_in_howl,
9292
double cards_in_howl_threshold_percent,
9393
uint max_cards_in_card_set,
9494
uint log2_card_regions_per_heap_region) :
9595
_inline_ptr_bits_per_card(inline_ptr_bits_per_card),
96-
_num_cards_in_array(num_cards_in_array),
96+
_max_cards_in_array(max_cards_in_array),
9797
_num_buckets_in_howl(num_buckets_in_howl),
9898
_max_cards_in_card_set(max_cards_in_card_set),
9999
_cards_in_howl_threshold(max_cards_in_card_set * cards_in_howl_threshold_percent),
100-
_num_cards_in_howl_bitmap(G1CardSetHowl::bitmap_size(_max_cards_in_card_set, _num_buckets_in_howl)),
101-
_cards_in_howl_bitmap_threshold(_num_cards_in_howl_bitmap * cards_in_bitmap_threshold_percent),
102-
_log2_num_cards_in_howl_bitmap(log2i_exact(_num_cards_in_howl_bitmap)),
103-
_bitmap_hash_mask(~(~(0) << _log2_num_cards_in_howl_bitmap)),
100+
_max_cards_in_howl_bitmap(G1CardSetHowl::bitmap_size(_max_cards_in_card_set, _num_buckets_in_howl)),
101+
_cards_in_howl_bitmap_threshold(_max_cards_in_howl_bitmap * cards_in_bitmap_threshold_percent),
102+
_log2_max_cards_in_howl_bitmap(log2i_exact(_max_cards_in_howl_bitmap)),
103+
_bitmap_hash_mask(~(~(0) << _log2_max_cards_in_howl_bitmap)),
104104
_log2_card_regions_per_heap_region(log2_card_regions_per_heap_region),
105105
_log2_cards_per_card_region(log2i_exact(_max_cards_in_card_set) - _log2_card_regions_per_heap_region) {
106106

@@ -118,8 +118,8 @@ G1CardSetConfiguration::~G1CardSetConfiguration() {
118118
void G1CardSetConfiguration::init_card_set_alloc_options() {
119119
_card_set_alloc_options = NEW_C_HEAP_ARRAY(G1CardSetAllocOptions, num_mem_object_types(), mtGC);
120120
new (&_card_set_alloc_options[0]) G1CardSetAllocOptions((uint)CardSetHash::get_node_size());
121-
new (&_card_set_alloc_options[1]) G1CardSetAllocOptions((uint)G1CardSetArray::size_in_bytes(_num_cards_in_array), 2, 256);
122-
new (&_card_set_alloc_options[2]) G1CardSetAllocOptions((uint)G1CardSetBitMap::size_in_bytes(_num_cards_in_howl_bitmap), 2, 256);
121+
new (&_card_set_alloc_options[1]) G1CardSetAllocOptions((uint)G1CardSetArray::size_in_bytes(_max_cards_in_array), 2, 256);
122+
new (&_card_set_alloc_options[2]) G1CardSetAllocOptions((uint)G1CardSetBitMap::size_in_bytes(_max_cards_in_howl_bitmap), 2, 256);
123123
new (&_card_set_alloc_options[3]) G1CardSetAllocOptions((uint)G1CardSetHowl::size_in_bytes(_num_buckets_in_howl), 2, 256);
124124
}
125125

@@ -130,19 +130,19 @@ void G1CardSetConfiguration::log_configuration() {
130130
"Howl #buckets %u coarsen threshold %u "
131131
"Howl Bitmap #elems %u size %zu coarsen threshold %u "
132132
"Card regions per heap region %u cards per card region %u",
133-
num_cards_in_inline_ptr(), sizeof(void*),
134-
num_cards_in_array(), G1CardSetArray::size_in_bytes(num_cards_in_array()),
133+
max_cards_in_inline_ptr(), sizeof(void*),
134+
max_cards_in_array(), G1CardSetArray::size_in_bytes(max_cards_in_array()),
135135
num_buckets_in_howl(), cards_in_howl_threshold(),
136-
num_cards_in_howl_bitmap(), G1CardSetBitMap::size_in_bytes(num_cards_in_howl_bitmap()), cards_in_howl_bitmap_threshold(),
136+
max_cards_in_howl_bitmap(), G1CardSetBitMap::size_in_bytes(max_cards_in_howl_bitmap()), cards_in_howl_bitmap_threshold(),
137137
(uint)1 << log2_card_regions_per_heap_region(),
138138
(uint)1 << log2_cards_per_card_region());
139139
}
140140

141-
uint G1CardSetConfiguration::num_cards_in_inline_ptr() const {
142-
return num_cards_in_inline_ptr(_inline_ptr_bits_per_card);
141+
uint G1CardSetConfiguration::max_cards_in_inline_ptr() const {
142+
return max_cards_in_inline_ptr(_inline_ptr_bits_per_card);
143143
}
144144

145-
uint G1CardSetConfiguration::num_cards_in_inline_ptr(uint bits_per_card) {
145+
uint G1CardSetConfiguration::max_cards_in_inline_ptr(uint bits_per_card) {
146146
return G1CardSetInlinePtr::max_cards_in_inline_ptr(bits_per_card);
147147
}
148148

@@ -508,19 +508,19 @@ G1AddCardResult G1CardSet::add_to_howl(CardSetPtr parent_card_set,
508508
G1AddCardResult G1CardSet::add_to_bitmap(CardSetPtr card_set, uint card_in_region) {
509509
G1CardSetBitMap* bitmap = card_set_ptr<G1CardSetBitMap>(card_set);
510510
uint card_offset = _config->howl_bitmap_offset(card_in_region);
511-
return bitmap->add(card_offset, _config->cards_in_howl_bitmap_threshold(), _config->num_cards_in_howl_bitmap());
511+
return bitmap->add(card_offset, _config->cards_in_howl_bitmap_threshold(), _config->max_cards_in_howl_bitmap());
512512
}
513513

514514
G1AddCardResult G1CardSet::add_to_inline_ptr(CardSetPtr volatile* card_set_addr, CardSetPtr card_set, uint card_in_region) {
515515
G1CardSetInlinePtr value(card_set_addr, card_set);
516-
return value.add(card_in_region, _config->inline_ptr_bits_per_card(), _config->num_cards_in_inline_ptr());
516+
return value.add(card_in_region, _config->inline_ptr_bits_per_card(), _config->max_cards_in_inline_ptr());
517517
}
518518

519519
G1CardSet::CardSetPtr G1CardSet::create_coarsened_array_of_cards(uint card_in_region, bool within_howl) {
520520
uint8_t* data = nullptr;
521521
CardSetPtr new_card_set;
522522
if (within_howl) {
523-
uint const size_in_bits = _config->num_cards_in_howl_bitmap();
523+
uint const size_in_bits = _config->max_cards_in_howl_bitmap();
524524
uint card_offset = _config->howl_bitmap_offset(card_in_region);
525525
data = allocate_mem_object(CardSetBitMap);
526526
new (data) G1CardSetBitMap(card_offset, size_in_bits);
@@ -549,7 +549,7 @@ bool G1CardSet::coarsen_card_set(volatile CardSetPtr* card_set_addr,
549549
break;
550550
}
551551
case CardSetInlinePtr: {
552-
uint const size = _config->num_cards_in_array();
552+
uint const size = _config->max_cards_in_array();
553553
uint8_t* data = allocate_mem_object(CardSetArrayOfCards);
554554
new (data) G1CardSetArray(card_in_region, size);
555555
new_card_set = make_card_set_ptr(data, CardSetArrayOfCards);
@@ -626,7 +626,7 @@ void G1CardSet::transfer_cards_in_howl(CardSetPtr parent_card_set,
626626
G1TransferCard iter(this, card_region);
627627
iterate_cards_during_transfer(source_card_set, iter);
628628
} else {
629-
uint diff = _config->num_cards_in_howl_bitmap() - card_set_ptr<G1CardSetBitMap>(source_card_set)->num_bits_set();
629+
uint diff = _config->max_cards_in_howl_bitmap() - card_set_ptr<G1CardSetBitMap>(source_card_set)->num_bits_set();
630630

631631
// Need to correct for that the Full remembered set occupies more cards than the
632632
// bitmap before.
@@ -755,7 +755,7 @@ bool G1CardSet::contains_card(uint card_region, uint card_in_region) {
755755
return ptr.contains(card_in_region, _config->inline_ptr_bits_per_card());
756756
}
757757
case CardSetArrayOfCards : return card_set_ptr<G1CardSetArray>(card_set)->contains(card_in_region);
758-
case CardSetBitMap: return card_set_ptr<G1CardSetBitMap>(card_set)->contains(card_in_region, _config->num_cards_in_howl_bitmap());
758+
case CardSetBitMap: return card_set_ptr<G1CardSetBitMap>(card_set)->contains(card_in_region, _config->max_cards_in_howl_bitmap());
759759
case CardSetHowl: {
760760
G1CardSetHowl* howling_array = card_set_ptr<G1CardSetHowl>(card_set);
761761

‎src/hotspot/share/gc/g1/g1CardSet.hpp

+12-14
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,21 @@ class G1CardSetConfiguration {
5050
// regions covered by this card set.
5151
uint _inline_ptr_bits_per_card;
5252

53-
uint _num_cards_in_array;
53+
uint _max_cards_in_array;
5454
uint _num_buckets_in_howl;
5555
uint _max_cards_in_card_set;
5656
uint _cards_in_howl_threshold;
57-
uint _num_cards_in_howl_bitmap;
57+
uint _max_cards_in_howl_bitmap;
5858
uint _cards_in_howl_bitmap_threshold;
59-
uint _log2_num_cards_in_howl_bitmap;
59+
uint _log2_max_cards_in_howl_bitmap;
6060
size_t _bitmap_hash_mask;
6161
uint _log2_card_regions_per_heap_region;
6262
uint _log2_cards_per_card_region;
6363

6464
G1CardSetAllocOptions* _card_set_alloc_options;
6565

6666
G1CardSetConfiguration(uint inline_ptr_bits_per_card,
67-
uint num_cards_in_array,
67+
uint max_cards_in_array,
6868
double cards_in_bitmap_threshold_percent,
6969
uint num_buckets_in_howl,
7070
double cards_in_howl_threshold_percent,
@@ -79,7 +79,7 @@ class G1CardSetConfiguration {
7979
G1CardSetConfiguration();
8080
// Initialize card set configuration from parameters.
8181
// Testing only.
82-
G1CardSetConfiguration(uint num_cards_in_array,
82+
G1CardSetConfiguration(uint max_cards_in_array,
8383
double cards_in_bitmap_threshold_percent,
8484
uint max_buckets_in_howl,
8585
double cards_in_howl_threshold_percent,
@@ -90,29 +90,27 @@ class G1CardSetConfiguration {
9090

9191
// Inline pointer configuration
9292
uint inline_ptr_bits_per_card() const { return _inline_ptr_bits_per_card; }
93-
uint num_cards_in_inline_ptr() const;
94-
static uint num_cards_in_inline_ptr(uint bits_per_card);
93+
uint max_cards_in_inline_ptr() const;
94+
static uint max_cards_in_inline_ptr(uint bits_per_card);
9595

9696
// Array of Cards configuration
97-
bool use_cards_in_array() const { return _num_cards_in_array != 0; } // Unused for now
98-
// Number of cards in "Array of Cards" set; 0 to disable.
97+
// Maximum number of cards in "Array of Cards" set; 0 to disable.
9998
// Always coarsen to next level if full, so no specific threshold.
100-
uint num_cards_in_array() const { return _num_cards_in_array; }
99+
uint max_cards_in_array() const { return _max_cards_in_array; }
101100

102101
// Bitmap within Howl card set container configuration
103-
bool use_cards_in_howl_bitmap() const { return _num_cards_in_howl_bitmap != 0; } // Unused for now
104-
uint num_cards_in_howl_bitmap() const { return _num_cards_in_howl_bitmap; }
102+
uint max_cards_in_howl_bitmap() const { return _max_cards_in_howl_bitmap; }
105103
// (Approximate) Number of cards in bitmap to coarsen Howl Bitmap to Howl Full.
106104
uint cards_in_howl_bitmap_threshold() const { return _cards_in_howl_bitmap_threshold; }
107-
uint log2_num_cards_in_howl_bitmap() const {return _log2_num_cards_in_howl_bitmap;}
105+
uint log2_max_cards_in_howl_bitmap() const {return _log2_max_cards_in_howl_bitmap;}
108106

109107
// Howl card set container configuration
110108
uint num_buckets_in_howl() const { return _num_buckets_in_howl; }
111109
// Threshold at which to turn howling arrays into Full.
112110
uint cards_in_howl_threshold() const { return _cards_in_howl_threshold; }
113111
uint howl_bitmap_offset(uint card_idx) const { return card_idx & _bitmap_hash_mask; }
114112
// Given a card index, return the bucket in the array of card sets.
115-
uint howl_bucket_index(uint card_idx) { return card_idx >> _log2_num_cards_in_howl_bitmap; }
113+
uint howl_bucket_index(uint card_idx) { return card_idx >> _log2_max_cards_in_howl_bitmap; }
116114

117115
// Full card configuration
118116
// Maximum number of cards in a non-full card set for a single region. Card sets

‎src/hotspot/share/gc/g1/g1CardSetContainers.inline.hpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -252,14 +252,14 @@ inline void G1CardSetBitMap::iterate(CardVisitor& found, size_t size_in_bits, ui
252252

253253
inline G1CardSetHowl::G1CardSetHowl(EntryCountType card_in_region, G1CardSetConfiguration* config) :
254254
G1CardSetContainer(),
255-
_num_entries((config->num_cards_in_array() + 1)) /* Card Transfer will not increment _num_entries */ {
255+
_num_entries((config->max_cards_in_array() + 1)) /* Card Transfer will not increment _num_entries */ {
256256
EntryCountType num_buckets = config->num_buckets_in_howl();
257257
EntryCountType bucket = config->howl_bucket_index(card_in_region);
258258
for (uint i = 0; i < num_buckets; ++i) {
259259
_buckets[i] = G1CardSetInlinePtr();
260260
if (i == bucket) {
261261
G1CardSetInlinePtr value(&_buckets[i], _buckets[i]);
262-
value.add(card_in_region, config->inline_ptr_bits_per_card(), config->num_cards_in_inline_ptr());
262+
value.add(card_in_region, config->inline_ptr_bits_per_card(), config->max_cards_in_inline_ptr());
263263
}
264264
}
265265
}
@@ -275,7 +275,7 @@ inline bool G1CardSetHowl::contains(uint card_idx, G1CardSetConfiguration* confi
275275
}
276276
case G1CardSet::CardSetBitMap: {
277277
uint card_offset = config->howl_bitmap_offset(card_idx);
278-
return G1CardSet::card_set_ptr<G1CardSetBitMap>(card_set)->contains(card_offset, config->num_cards_in_howl_bitmap());
278+
return G1CardSet::card_set_ptr<G1CardSetBitMap>(card_set)->contains(card_offset, config->max_cards_in_howl_bitmap());
279279
}
280280
case G1CardSet::CardSetInlinePtr: {
281281
G1CardSetInlinePtr ptr(card_set);
@@ -321,28 +321,28 @@ inline void G1CardSetHowl::iterate_cardset(CardSetPtr const card_set, uint index
321321
}
322322
case G1CardSet::CardSetBitMap: {
323323
if (found.start_iterate(G1GCPhaseTimes::MergeRSHowlBitmap)) {
324-
uint offset = index << config->log2_num_cards_in_howl_bitmap();
325-
G1CardSet::card_set_ptr<G1CardSetBitMap>(card_set)->iterate(found, config->num_cards_in_howl_bitmap(), offset);
324+
uint offset = index << config->log2_max_cards_in_howl_bitmap();
325+
G1CardSet::card_set_ptr<G1CardSetBitMap>(card_set)->iterate(found, config->max_cards_in_howl_bitmap(), offset);
326326
}
327327
return;
328328
}
329329
case G1CardSet::CardSetHowl: { // actually FullCardSet
330330
assert(card_set == G1CardSet::FullCardSet, "Must be");
331331
if (found.start_iterate(G1GCPhaseTimes::MergeRSHowlFull)) {
332-
uint offset = index << config->log2_num_cards_in_howl_bitmap();
333-
found(offset, config->num_cards_in_howl_bitmap());
332+
uint offset = index << config->log2_max_cards_in_howl_bitmap();
333+
found(offset, config->max_cards_in_howl_bitmap());
334334
}
335335
return;
336336
}
337337
}
338338
}
339339

340-
inline G1CardSetHowl::EntryCountType G1CardSetHowl::num_buckets(size_t size_in_bits, size_t num_cards_in_array, size_t max_num_buckets) {
340+
inline G1CardSetHowl::EntryCountType G1CardSetHowl::num_buckets(size_t size_in_bits, size_t max_cards_in_array, size_t max_num_buckets) {
341341
size_t size_bitmap_bytes = BitMap::calc_size_in_words(size_in_bits) * BytesPerWord;
342342
// Ensure that in the worst case arrays consume half the memory size
343343
// of storing the entire bitmap
344344
size_t max_size_arrays_bytes = size_bitmap_bytes / 2;
345-
size_t size_array_bytes = num_cards_in_array * sizeof(G1CardSetArray::EntryDataType);
345+
size_t size_array_bytes = max_cards_in_array * sizeof(G1CardSetArray::EntryDataType);
346346
size_t num_arrays = max_size_arrays_bytes / size_array_bytes;
347347
// We use shifts and masks for indexing the array. So round down to the next
348348
// power of two to not use more than expected memory.

‎test/hotspot/gtest/gc/g1/test_g1CardSet.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -345,17 +345,17 @@ void G1CardSetTest::cardset_basic_test() {
345345
ASSERT_TRUE(count == card_set.occupied());
346346
}
347347

348-
G1AddCardResult res = card_set.add_card(99, config.num_cards_in_howl_bitmap() - 1);
348+
G1AddCardResult res = card_set.add_card(99, config.max_cards_in_howl_bitmap() - 1);
349349
// Adding above card should have coarsened Bitmap -> Full.
350350
ASSERT_TRUE(res == Added);
351-
ASSERT_TRUE(config.num_cards_in_howl_bitmap() == card_set.occupied());
351+
ASSERT_TRUE(config.max_cards_in_howl_bitmap() == card_set.occupied());
352352

353-
res = card_set.add_card(99, config.num_cards_in_howl_bitmap() - 2);
353+
res = card_set.add_card(99, config.max_cards_in_howl_bitmap() - 2);
354354
ASSERT_TRUE(res == Found);
355355

356356
uint threshold = config.cards_in_howl_threshold();
357357
uint adjusted_threshold = config.cards_in_howl_bitmap_threshold() * config.num_buckets_in_howl();
358-
i = config.num_cards_in_howl_bitmap();
358+
i = config.max_cards_in_howl_bitmap();
359359
count = i;
360360
for (; i < threshold; i++) {
361361
G1AddCardResult res = card_set.add_card(99, i);

0 commit comments

Comments
 (0)
Please sign in to comment.