8306833: Change CardTable::_covered to static array

Reviewed-by: tschatzl, kbarrett
This commit is contained in:
Albert Mingkun Yang 2023-04-27 11:40:50 +00:00
parent 1be80a4445
commit 96cdf93b42
4 changed files with 8 additions and 12 deletions

View File

@ -74,17 +74,12 @@ CardTable::CardTable(MemRegion whole_heap) :
_byte_map_size(0),
_byte_map(nullptr),
_byte_map_base(nullptr),
_covered(MemRegion::create_array(max_covered_regions, mtGC)),
_guard_region()
{
assert((uintptr_t(_whole_heap.start()) & (_card_size - 1)) == 0, "heap must start at card boundary");
assert((uintptr_t(_whole_heap.end()) & (_card_size - 1)) == 0, "heap must end at card boundary");
}
CardTable::~CardTable() {
MemRegion::destroy_array(_covered, max_covered_regions);
}
void CardTable::initialize(void* region0_start, void* region1_start) {
size_t num_cards = cards_required(_whole_heap.word_size());

View File

@ -57,7 +57,7 @@ protected:
static constexpr int max_covered_regions = 2;
// The covered regions should be in address order.
MemRegion* _covered;
MemRegion _covered[max_covered_regions];
// The last card is a guard card; never committed.
MemRegion _guard_region;
@ -82,13 +82,15 @@ protected:
size_t last_valid_index() const {
return cards_required(_whole_heap.word_size()) - 1;
}
private:
void initialize_covered_region(void* region0_start, void* region1_start);
MemRegion committed_for(const MemRegion mr) const;
public:
CardTable(MemRegion whole_heap);
virtual ~CardTable();
virtual ~CardTable() = default;
void initialize(void* region0_start, void* region1_start);
// *** Barrier set functions.

View File

@ -60,9 +60,9 @@ protected:
CardTable* card_table,
const BarrierSet::FakeRtti& fake_rtti);
public:
public:
CardTableBarrierSet(CardTable* card_table);
~CardTableBarrierSet();
virtual ~CardTableBarrierSet();
CardTable* card_table() const { return _card_table; }

View File

@ -89,10 +89,9 @@
nonstatic_field(CardTable, _whole_heap, const MemRegion) \
nonstatic_field(CardTable, _page_size, const size_t) \
nonstatic_field(CardTable, _byte_map_size, const size_t) \
nonstatic_field(CardTable, _byte_map, CardTable::CardValue*) \
nonstatic_field(CardTable, _covered, MemRegion*) \
nonstatic_field(CardTable, _byte_map, CardTable::CardValue*) \
nonstatic_field(CardTable, _guard_region, MemRegion) \
nonstatic_field(CardTable, _byte_map_base, CardTable::CardValue*) \
nonstatic_field(CardTable, _byte_map_base, CardTable::CardValue*) \
nonstatic_field(CardTableBarrierSet, _defer_initial_card_mark, bool) \
nonstatic_field(CardTableBarrierSet, _card_table, CardTable*) \
\