src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp

changeset 6932
828056cf311f
parent 6928
8cc89a893545
child 6992
2c6ef90f030a
     1.1 --- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Mon Jul 21 09:40:19 2014 +0200
     1.2 +++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Mon Jul 21 09:40:19 2014 +0200
     1.3 @@ -169,7 +169,7 @@
     1.4  
     1.5    // Mem size in bytes.
     1.6    size_t mem_size() const {
     1.7 -    return sizeof(this) + _bm.size_in_words() * HeapWordSize;
     1.8 +    return sizeof(PerRegionTable) + _bm.size_in_words() * HeapWordSize;
     1.9    }
    1.10  
    1.11    // Requires "from" to be in "hr()".
    1.12 @@ -735,7 +735,7 @@
    1.13    sum += (sizeof(PerRegionTable*) * _max_fine_entries);
    1.14    sum += (_coarse_map.size_in_words() * HeapWordSize);
    1.15    sum += (_sparse_table.mem_size());
    1.16 -  sum += sizeof(*this) - sizeof(_sparse_table); // Avoid double counting above.
    1.17 +  sum += sizeof(OtherRegionsTable) - sizeof(_sparse_table); // Avoid double counting above.
    1.18    return sum;
    1.19  }
    1.20  
    1.21 @@ -1249,6 +1249,11 @@
    1.22  #ifndef PRODUCT
    1.23  void PerRegionTable::test_fl_mem_size() {
    1.24    PerRegionTable* dummy = alloc(NULL);
    1.25 +
    1.26 +  size_t min_prt_size = sizeof(void*) + dummy->bm()->size_in_words() * HeapWordSize;
    1.27 +  assert(dummy->mem_size() > min_prt_size,
    1.28 +         err_msg("PerRegionTable memory usage is suspiciously small, only has "SIZE_FORMAT" bytes. "
    1.29 +                 "Should be at least "SIZE_FORMAT" bytes.", dummy->mem_size(), min_prt_size));
    1.30    free(dummy);
    1.31    guarantee(dummy->mem_size() == fl_mem_size(), "fl_mem_size() does not return the correct element size");
    1.32    // try to reset the state

mercurial