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