comparison src/share/vm/services/memSnapshot.cpp @ 7212:291ffc492eb6

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author Doug Simon <doug.simon@oracle.com>
date Fri, 14 Dec 2012 14:35:13 +0100
parents 49cbd3e25ba9
children ecd24264898b
comparison
equal deleted inserted replaced
7163:2ed8d74e5984 7212:291ffc492eb6
259 bool VMMemPointerIterator::remove_released_region(MemPointerRecord* rec) { 259 bool VMMemPointerIterator::remove_released_region(MemPointerRecord* rec) {
260 assert(rec->is_deallocation_record(), "Sanity check"); 260 assert(rec->is_deallocation_record(), "Sanity check");
261 VMMemRegion* cur = (VMMemRegion*)current(); 261 VMMemRegion* cur = (VMMemRegion*)current();
262 assert(cur->is_reserved_region() && cur->contains_region(rec), 262 assert(cur->is_reserved_region() && cur->contains_region(rec),
263 "Sanity check"); 263 "Sanity check");
264 if (rec->is_same_region(cur)) {
265 // release whole reserved region
264 #ifdef ASSERT 266 #ifdef ASSERT
265 VMMemRegion* next_reg = (VMMemRegion*)peek_next(); 267 VMMemRegion* next_region = (VMMemRegion*)peek_next();
266 // should not have any committed memory in this reserved region 268 // should not have any committed memory in this reserved region
267 assert(next_reg == NULL || !next_reg->is_committed_region(), "Sanity check"); 269 assert(next_region == NULL || !next_region->is_committed_region(), "Sanity check");
268 #endif 270 #endif
269 if (rec->is_same_region(cur)) {
270 remove(); 271 remove();
271 } else if (rec->addr() == cur->addr() || 272 } else if (rec->addr() == cur->addr() ||
272 rec->addr() + rec->size() == cur->addr() + cur->size()) { 273 rec->addr() + rec->size() == cur->addr() + cur->size()) {
273 // released region is at either end of this region 274 // released region is at either end of this region
274 cur->exclude_region(rec->addr(), rec->size()); 275 cur->exclude_region(rec->addr(), rec->size());
276 assert(check_reserved_region(), "Integrity check");
275 } else { // split the reserved region and release the middle 277 } else { // split the reserved region and release the middle
276 address high_addr = cur->addr() + cur->size(); 278 address high_addr = cur->addr() + cur->size();
277 size_t sz = high_addr - rec->addr(); 279 size_t sz = high_addr - rec->addr();
278 cur->exclude_region(rec->addr(), sz); 280 cur->exclude_region(rec->addr(), sz);
279 sz = high_addr - rec->addr() - rec->size(); 281 sz = high_addr - rec->addr() - rec->size();
280 if (MemTracker::track_callsite()) { 282 if (MemTracker::track_callsite()) {
281 MemPointerRecordEx tmp(rec->addr() + rec->size(), cur->flags(), sz, 283 MemPointerRecordEx tmp(rec->addr() + rec->size(), cur->flags(), sz,
282 ((VMMemRegionEx*)cur)->pc()); 284 ((VMMemRegionEx*)cur)->pc());
283 return insert_reserved_region(&tmp); 285 bool ret = insert_reserved_region(&tmp);
286 assert(!ret || check_reserved_region(), "Integrity check");
287 return ret;
284 } else { 288 } else {
285 MemPointerRecord tmp(rec->addr() + rec->size(), cur->flags(), sz); 289 MemPointerRecord tmp(rec->addr() + rec->size(), cur->flags(), sz);
286 return insert_reserved_region(&tmp); 290 bool ret = insert_reserved_region(&tmp);
291 assert(!ret || check_reserved_region(), "Integrity check");
292 return ret;
287 } 293 }
288 } 294 }
289 return true; 295 return true;
290 } 296 }
291 297