src/share/vm/services/memSnapshot.cpp

changeset 4285
49cbd3e25ba9
parent 4276
8c413497f434
child 4400
ecd24264898b
     1.1 --- a/src/share/vm/services/memSnapshot.cpp	Tue Nov 13 15:14:27 2012 -0500
     1.2 +++ b/src/share/vm/services/memSnapshot.cpp	Fri Nov 16 09:05:19 2012 -0500
     1.3 @@ -261,17 +261,19 @@
     1.4    VMMemRegion* cur = (VMMemRegion*)current();
     1.5    assert(cur->is_reserved_region() && cur->contains_region(rec),
     1.6      "Sanity check");
     1.7 +  if (rec->is_same_region(cur)) {
     1.8 +    // release whole reserved region
     1.9  #ifdef ASSERT
    1.10 -  VMMemRegion* next_reg = (VMMemRegion*)peek_next();
    1.11 -  // should not have any committed memory in this reserved region
    1.12 -  assert(next_reg == NULL || !next_reg->is_committed_region(), "Sanity check");
    1.13 +    VMMemRegion* next_region = (VMMemRegion*)peek_next();
    1.14 +    // should not have any committed memory in this reserved region
    1.15 +    assert(next_region == NULL || !next_region->is_committed_region(), "Sanity check");
    1.16  #endif
    1.17 -  if (rec->is_same_region(cur)) {
    1.18      remove();
    1.19    } else if (rec->addr() == cur->addr() ||
    1.20      rec->addr() + rec->size() == cur->addr() + cur->size()) {
    1.21      // released region is at either end of this region
    1.22      cur->exclude_region(rec->addr(), rec->size());
    1.23 +    assert(check_reserved_region(), "Integrity check");
    1.24    } else { // split the reserved region and release the middle
    1.25      address high_addr = cur->addr() + cur->size();
    1.26      size_t sz = high_addr - rec->addr();
    1.27 @@ -280,10 +282,14 @@
    1.28      if (MemTracker::track_callsite()) {
    1.29        MemPointerRecordEx tmp(rec->addr() + rec->size(), cur->flags(), sz,
    1.30          ((VMMemRegionEx*)cur)->pc());
    1.31 -      return insert_reserved_region(&tmp);
    1.32 +      bool ret = insert_reserved_region(&tmp);
    1.33 +      assert(!ret || check_reserved_region(), "Integrity check");
    1.34 +      return ret;
    1.35      } else {
    1.36        MemPointerRecord tmp(rec->addr() + rec->size(), cur->flags(), sz);
    1.37 -      return insert_reserved_region(&tmp);
    1.38 +      bool ret = insert_reserved_region(&tmp);
    1.39 +      assert(!ret || check_reserved_region(), "Integrity check");
    1.40 +      return ret;
    1.41      }
    1.42    }
    1.43    return true;

mercurial