src/share/vm/runtime/os.cpp

changeset 5272
1f4355cee9a2
parent 5255
a837fa3d3f86
child 5424
5e3b6f79d280
child 6453
75ef1a499665
     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  }

mercurial