src/share/vm/services/memBaseline.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/services/memBaseline.cpp	Wed Nov  7 10:54:17 2012
--- new/src/share/vm/services/memBaseline.cpp	Wed Nov  7 10:54:15 2012

*** 113,135 **** --- 113,143 ---- size_t used_arena_size = 0; int index; while (malloc_ptr != NULL) { index = flag2index(FLAGS_TO_MEMORY_TYPE(malloc_ptr->flags())); size_t size = malloc_ptr->size(); + if (malloc_ptr->is_arena_size_record()) { + // We do have anonymouse arenas, they are either used as value objects, + // which are embedded inside other objects, or used as stack objects. + _arena_data[index].inc(size); + used_arena_size += size; + } else { _total_malloced += size; _malloc_data[index].inc(size); ! if (MemPointerRecord::is_arena_record(malloc_ptr->flags())) { ! if (malloc_ptr->is_arena_record()) { // see if arena size record present MemPointerRecord* next_malloc_ptr = (MemPointerRecordEx*)malloc_itr.peek_next(); ! if (MemPointerRecord::is_arena_size_record(next_malloc_ptr->flags())) { assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr), "arena records do not match"); ! if (next_malloc_ptr->is_arena_size_record()) { + assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr), + "Arena records do not match"); size = next_malloc_ptr->size(); _arena_data[index].inc(size); used_arena_size += size; malloc_itr.next(); } } + } malloc_ptr = (MemPointerRecordEx*)malloc_itr.next(); } // substract used arena size to get size of arena chunk in free list index = flag2index(mtChunk);

src/share/vm/services/memBaseline.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File