diff --git a/src/hotspot/share/gc/shared/cardTable.cpp b/src/hotspot/share/gc/shared/cardTable.cpp index 16edfada77d..1095defaf9f 100644 --- a/src/hotspot/share/gc/shared/cardTable.cpp +++ b/src/hotspot/share/gc/shared/cardTable.cpp @@ -202,6 +202,7 @@ void CardTable::resize_covered_region(MemRegion new_region) { void CardTable::dirty_MemRegion(MemRegion mr) { assert(align_down(mr.start(), HeapWordSize) == mr.start(), "Unaligned start"); assert(align_up (mr.end(), HeapWordSize) == mr.end(), "Unaligned end" ); + assert(_covered[0].contains(mr) || _covered[1].contains(mr), "precondition"); CardValue* cur = byte_for(mr.start()); CardValue* last = byte_after(mr.last()); memset(cur, dirty_card, pointer_delta(last, cur, sizeof(CardValue))); @@ -226,15 +227,6 @@ uintx CardTable::ct_max_alignment_constraint() { return GCCardSizeInBytes * os::vm_page_size(); } -void CardTable::invalidate(MemRegion mr) { - assert(align_down(mr.start(), HeapWordSize) == mr.start(), "Unaligned start"); - assert(align_up (mr.end(), HeapWordSize) == mr.end(), "Unaligned end" ); - for (int i = 0; i < max_covered_regions; i++) { - MemRegion mri = mr.intersection(_covered[i]); - if (!mri.is_empty()) dirty_MemRegion(mri); - } -} - #ifndef PRODUCT void CardTable::verify_region(MemRegion mr, CardValue val, bool val_equals) { CardValue* start = byte_for(mr.start()); diff --git a/src/hotspot/share/gc/shared/cardTable.hpp b/src/hotspot/share/gc/shared/cardTable.hpp index 13285be4fc5..ee41be06be0 100644 --- a/src/hotspot/share/gc/shared/cardTable.hpp +++ b/src/hotspot/share/gc/shared/cardTable.hpp @@ -131,8 +131,6 @@ public: return byte_for(p) + 1; } - void invalidate(MemRegion mr); - // Provide read-only access to the card table array. const CardValue* byte_for_const(const void* p) const { return byte_for(p); diff --git a/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp b/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp index c4f318561d6..1aab76d5ab5 100644 --- a/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp +++ b/src/hotspot/share/gc/shared/cardTableBarrierSet.cpp @@ -85,7 +85,7 @@ void CardTableBarrierSet::write_ref_array_work(MemRegion mr) { } void CardTableBarrierSet::invalidate(MemRegion mr) { - _card_table->invalidate(mr); + _card_table->dirty_MemRegion(mr); } void CardTableBarrierSet::print_on(outputStream* st) const {