equal
deleted
inserted
replaced
165 bm->set_union(_bm); |
165 bm->set_union(_bm); |
166 } |
166 } |
167 |
167 |
168 // Mem size in bytes. |
168 // Mem size in bytes. |
169 size_t mem_size() const { |
169 size_t mem_size() const { |
170 return sizeof(this) + _bm.size_in_words() * HeapWordSize; |
170 return sizeof(PerRegionTable) + _bm.size_in_words() * HeapWordSize; |
171 } |
171 } |
172 |
172 |
173 // Requires "from" to be in "hr()". |
173 // Requires "from" to be in "hr()". |
174 bool contains_reference(OopOrNarrowOopStar from) const { |
174 bool contains_reference(OopOrNarrowOopStar from) const { |
175 assert(hr()->is_in_reserved(from), "Precondition."); |
175 assert(hr()->is_in_reserved(from), "Precondition."); |
731 sum += _first_all_fine_prts->mem_size() * _n_fine_entries; |
731 sum += _first_all_fine_prts->mem_size() * _n_fine_entries; |
732 } |
732 } |
733 sum += (sizeof(PerRegionTable*) * _max_fine_entries); |
733 sum += (sizeof(PerRegionTable*) * _max_fine_entries); |
734 sum += (_coarse_map.size_in_words() * HeapWordSize); |
734 sum += (_coarse_map.size_in_words() * HeapWordSize); |
735 sum += (_sparse_table.mem_size()); |
735 sum += (_sparse_table.mem_size()); |
736 sum += sizeof(*this) - sizeof(_sparse_table); // Avoid double counting above. |
736 sum += sizeof(OtherRegionsTable) - sizeof(_sparse_table); // Avoid double counting above. |
737 return sum; |
737 return sum; |
738 } |
738 } |
739 |
739 |
740 size_t OtherRegionsTable::static_mem_size() { |
740 size_t OtherRegionsTable::static_mem_size() { |
741 return FromCardCache::static_mem_size(); |
741 return FromCardCache::static_mem_size(); |
1246 } |
1246 } |
1247 |
1247 |
1248 #ifndef PRODUCT |
1248 #ifndef PRODUCT |
1249 void PerRegionTable::test_fl_mem_size() { |
1249 void PerRegionTable::test_fl_mem_size() { |
1250 PerRegionTable* dummy = alloc(NULL); |
1250 PerRegionTable* dummy = alloc(NULL); |
|
1251 |
|
1252 size_t min_prt_size = sizeof(void*) + dummy->bm()->size_in_words() * HeapWordSize; |
|
1253 assert(dummy->mem_size() > min_prt_size, |
|
1254 err_msg("PerRegionTable memory usage is suspiciously small, only has "SIZE_FORMAT" bytes. " |
|
1255 "Should be at least "SIZE_FORMAT" bytes.", dummy->mem_size(), min_prt_size)); |
1251 free(dummy); |
1256 free(dummy); |
1252 guarantee(dummy->mem_size() == fl_mem_size(), "fl_mem_size() does not return the correct element size"); |
1257 guarantee(dummy->mem_size() == fl_mem_size(), "fl_mem_size() does not return the correct element size"); |
1253 // try to reset the state |
1258 // try to reset the state |
1254 _free_list = NULL; |
1259 _free_list = NULL; |
1255 delete dummy; |
1260 delete dummy; |