Print this page
rev 4499 : 8013120: NMT: Kitchensink crashes with assert(next_region == NULL || !next_region->is_committed_region()) failed: Sanity check
Summary: Fixed NMT to deal with releasing virtual memory region when there are still committed regions within it
Reviewed-by: acorn, coleenp

Split Split Close
Expand all
Collapse all
          --- old/src/share/vm/runtime/os.cpp
          +++ new/src/share/vm/runtime/os.cpp
↓ open down ↓ 1395 lines elided ↑ open up ↑
1396 1396  }
1397 1397  
1398 1398  char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint) {
1399 1399    char* result = pd_reserve_memory(bytes, addr, alignment_hint);
1400 1400    if (result != NULL) {
1401 1401      MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
1402 1402    }
1403 1403  
1404 1404    return result;
1405 1405  }
     1406 +
     1407 +char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint,
     1408 +   MEMFLAGS flags) {
     1409 +  char* result = pd_reserve_memory(bytes, addr, alignment_hint);
     1410 +  if (result != NULL) {
     1411 +    MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
     1412 +    MemTracker::record_virtual_memory_type((address)result, flags);
     1413 +  }
     1414 +
     1415 +  return result;
     1416 +}
     1417 +
1406 1418  char* os::attempt_reserve_memory_at(size_t bytes, char* addr) {
1407 1419    char* result = pd_attempt_reserve_memory_at(bytes, addr);
1408 1420    if (result != NULL) {
1409 1421      MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
1410 1422    }
1411 1423    return result;
1412 1424  }
1413 1425  
1414 1426  void os::split_reserved_memory(char *base, size_t size,
1415 1427                                   size_t split, bool realloc) {
↓ open down ↓ 72 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX