Mercurial > hg > graal-jvmci-8
diff src/share/vm/services/memSnapshot.hpp @ 7166:49cbd3e25ba9
8003487: NMT: incorrect assertion in VMMemPointerIterator::remove_released_region method (memSnapshot.cpp)
Summary: The assertion is applied to only the region to be released, also performs region integrity checking
Reviewed-by: acorn, coleenp
author | zgu |
---|---|
date | Fri, 16 Nov 2012 09:05:19 -0500 |
parents | fb3190e77d3c |
children | ecd24264898b |
line wrap: on
line diff
--- a/src/share/vm/services/memSnapshot.hpp Tue Nov 13 15:14:27 2012 -0500 +++ b/src/share/vm/services/memSnapshot.hpp Fri Nov 16 09:05:19 2012 -0500 @@ -146,6 +146,23 @@ // reset current position inline void reset() { _pos = 0; } #ifdef ASSERT + // check integrity of records on current reserved memory region. + bool check_reserved_region() { + VMMemRegion* reserved_region = (VMMemRegion*)current(); + assert(reserved_region != NULL && reserved_region->is_reserved_region(), + "Sanity check"); + // all committed regions that follow current reserved region, should all + // belong to the reserved region. + VMMemRegion* next_region = (VMMemRegion*)next(); + for (; next_region != NULL && next_region->is_committed_region(); + next_region = (VMMemRegion*)next() ) { + if(!reserved_region->contains_region(next_region)) { + return false; + } + } + return true; + } + virtual bool is_dup_pointer(const MemPointer* ptr1, const MemPointer* ptr2) const { VMMemRegion* p1 = (VMMemRegion*)ptr1;