hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
changeset 24108 dfc2242fc6b0
parent 24106 dae9277bdf2a
child 24424 2658d7834c6e
equal deleted inserted replaced
24107:74cda485bff8 24108:dfc2242fc6b0
   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;