--- old/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2013-05-14 15:41:33.744528770 +0200 +++ new/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2013-05-14 15:41:33.384528777 +0200 @@ -242,11 +242,19 @@ PerRegionTable* cur = _free_list; size_t res = 0; while (cur != NULL) { - res += sizeof(PerRegionTable); + res += cur->mem_size(); cur = cur->next(); } return res; } + +#ifndef PRODUCT + static void test() { + PerRegionTable* dummy = alloc(NULL); + free(dummy); + guarantee(dummy->mem_size() == fl_mem_size(), "fl_mem_size() does not return the correct element size"); + } +#endif }; PerRegionTable* PerRegionTable::_free_list = NULL; @@ -1147,6 +1155,10 @@ } #ifndef PRODUCT +void HeapRegionRemSet::test_prt() { + PerRegionTable::test(); +} + void HeapRegionRemSet::test() { os::sleep(Thread::current(), (jlong)5000, false); G1CollectedHeap* g1h = G1CollectedHeap::heap();