src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
Print this page
*** 240,254 ****
static size_t fl_mem_size() {
PerRegionTable* cur = _free_list;
size_t res = 0;
while (cur != NULL) {
! res += sizeof(PerRegionTable);
cur = cur->next();
}
return res;
}
};
PerRegionTable* PerRegionTable::_free_list = NULL;
size_t OtherRegionsTable::_max_fine_entries = 0;
--- 240,256 ----
static size_t fl_mem_size() {
PerRegionTable* cur = _free_list;
size_t res = 0;
while (cur != NULL) {
! res += cur->mem_size();
cur = cur->next();
}
return res;
}
+
+ static void test_fl_mem_size();
};
PerRegionTable* PerRegionTable::_free_list = NULL;
size_t OtherRegionsTable::_max_fine_entries = 0;
*** 1145,1154 ****
--- 1147,1169 ----
HeapRegionRemSet::finish_cleanup_task(HRRSCleanupTask* hrrs_cleanup_task) {
SparsePRT::finish_cleanup_task(hrrs_cleanup_task);
}
#ifndef PRODUCT
+ void PerRegionTable::test_fl_mem_size() {
+ PerRegionTable* dummy = alloc(NULL);
+ free(dummy);
+ guarantee(dummy->mem_size() == fl_mem_size(), "fl_mem_size() does not return the correct element size");
+ // try to reset the state
+ _free_list = NULL;
+ delete dummy;
+ }
+
+ void HeapRegionRemSet::test_prt() {
+ PerRegionTable::test_fl_mem_size();
+ }
+
void HeapRegionRemSet::test() {
os::sleep(Thread::current(), (jlong)5000, false);
G1CollectedHeap* g1h = G1CollectedHeap::heap();
// Run with "-XX:G1LogRSetRegionEntries=2", so that 1 and 5 end up in same