1.1 --- a/src/share/vm/runtime/os.cpp Mon Jun 10 10:45:19 2013 -0400 1.2 +++ b/src/share/vm/runtime/os.cpp Tue Jun 18 08:44:08 2013 -0400 1.3 @@ -647,10 +647,13 @@ 1.4 #ifndef ASSERT 1.5 NOT_PRODUCT(inc_stat_counter(&num_mallocs, 1)); 1.6 NOT_PRODUCT(inc_stat_counter(&alloc_bytes, size)); 1.7 + MemTracker::Tracker tkr = MemTracker::get_realloc_tracker(); 1.8 void* ptr = ::realloc(memblock, size); 1.9 if (ptr != NULL) { 1.10 - MemTracker::record_realloc((address)memblock, (address)ptr, size, memflags, 1.11 + tkr.record((address)memblock, (address)ptr, size, memflags, 1.12 caller == 0 ? CALLER_PC : caller); 1.13 + } else { 1.14 + tkr.discard(); 1.15 } 1.16 return ptr; 1.17 #else 1.18 @@ -1456,7 +1459,7 @@ 1.19 char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint) { 1.20 char* result = pd_reserve_memory(bytes, addr, alignment_hint); 1.21 if (result != NULL) { 1.22 - MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC); 1.23 + MemTracker::record_virtual_memory_reserve((address)result, bytes, mtNone, CALLER_PC); 1.24 } 1.25 1.26 return result; 1.27 @@ -1466,7 +1469,7 @@ 1.28 MEMFLAGS flags) { 1.29 char* result = pd_reserve_memory(bytes, addr, alignment_hint); 1.30 if (result != NULL) { 1.31 - MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC); 1.32 + MemTracker::record_virtual_memory_reserve((address)result, bytes, mtNone, CALLER_PC); 1.33 MemTracker::record_virtual_memory_type((address)result, flags); 1.34 } 1.35 1.36 @@ -1476,7 +1479,7 @@ 1.37 char* os::attempt_reserve_memory_at(size_t bytes, char* addr) { 1.38 char* result = pd_attempt_reserve_memory_at(bytes, addr); 1.39 if (result != NULL) { 1.40 - MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC); 1.41 + MemTracker::record_virtual_memory_reserve((address)result, bytes, mtNone, CALLER_PC); 1.42 } 1.43 return result; 1.44 } 1.45 @@ -1516,17 +1519,23 @@ 1.46 } 1.47 1.48 bool os::uncommit_memory(char* addr, size_t bytes) { 1.49 + MemTracker::Tracker tkr = MemTracker::get_virtual_memory_uncommit_tracker(); 1.50 bool res = pd_uncommit_memory(addr, bytes); 1.51 if (res) { 1.52 - MemTracker::record_virtual_memory_uncommit((address)addr, bytes); 1.53 + tkr.record((address)addr, bytes); 1.54 + } else { 1.55 + tkr.discard(); 1.56 } 1.57 return res; 1.58 } 1.59 1.60 bool os::release_memory(char* addr, size_t bytes) { 1.61 + MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); 1.62 bool res = pd_release_memory(addr, bytes); 1.63 if (res) { 1.64 - MemTracker::record_virtual_memory_release((address)addr, bytes); 1.65 + tkr.record((address)addr, bytes); 1.66 + } else { 1.67 + tkr.discard(); 1.68 } 1.69 return res; 1.70 } 1.71 @@ -1537,8 +1546,7 @@ 1.72 bool allow_exec) { 1.73 char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec); 1.74 if (result != NULL) { 1.75 - MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC); 1.76 - MemTracker::record_virtual_memory_commit((address)result, bytes, CALLER_PC); 1.77 + MemTracker::record_virtual_memory_reserve_and_commit((address)result, bytes, mtNone, CALLER_PC); 1.78 } 1.79 return result; 1.80 } 1.81 @@ -1551,10 +1559,12 @@ 1.82 } 1.83 1.84 bool os::unmap_memory(char *addr, size_t bytes) { 1.85 + MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); 1.86 bool result = pd_unmap_memory(addr, bytes); 1.87 if (result) { 1.88 - MemTracker::record_virtual_memory_uncommit((address)addr, bytes); 1.89 - MemTracker::record_virtual_memory_release((address)addr, bytes); 1.90 + tkr.record((address)addr, bytes); 1.91 + } else { 1.92 + tkr.discard(); 1.93 } 1.94 return result; 1.95 }