8001592: NMT: assertion failed: assert(_amount >= amt) failed: Just check: memBaseline.hpp:180

Fixed NMT that miscounted arena memory when it is used as value or stack object.

Reviewed-by: acorn, coleenp
This commit is contained in:
Zhengyu Gu 2012-11-09 19:24:31 -05:00
parent 61a5a58cb1
commit f47de1cb41
5 changed files with 135 additions and 113 deletions

View file

@ -284,14 +284,14 @@ class MemTracker : AllStatic {
}
}
// record arena size
// record arena memory size
static inline void record_arena_size(address addr, size_t size) {
// we add a positive offset to arena address, so we can have arena size record
// we add a positive offset to arena address, so we can have arena memory record
// sorted after arena record
if (is_on() && !UseMallocOnly) {
assert(addr != NULL, "Sanity check");
create_memory_record((addr + sizeof(void*)), MemPointerRecord::arena_size_tag(), size,
0, NULL);
DEBUG_CALLER_PC, NULL);
}
}