Mercurial > hg > truffle
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 |