equal
deleted
inserted
replaced
2437 } |
2437 } |
2438 return NULL; |
2438 return NULL; |
2439 } |
2439 } |
2440 |
2440 |
2441 // The memory is committed |
2441 // The memory is committed |
2442 MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, mtNone, CALLER_PC); |
2442 MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC); |
2443 |
2443 |
2444 return addr; |
2444 return addr; |
2445 } |
2445 } |
2446 |
2446 |
2447 bool os::release_memory_special(char* base, size_t bytes) { |
2447 bool os::release_memory_special(char* base, size_t bytes) { |
2448 MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); |
2448 if (MemTracker::tracking_level() > NMT_minimal) { |
2449 // detaching the SHM segment will also delete it, see reserve_memory_special() |
2449 Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); |
2450 int rslt = shmdt(base); |
2450 // detaching the SHM segment will also delete it, see reserve_memory_special() |
2451 if (rslt == 0) { |
2451 int rslt = shmdt(base); |
2452 tkr.record((address)base, bytes); |
2452 if (rslt == 0) { |
2453 return true; |
2453 tkr.record((address)base, bytes); |
|
2454 return true; |
|
2455 } else { |
|
2456 return false; |
|
2457 } |
2454 } else { |
2458 } else { |
2455 tkr.discard(); |
2459 return shmdt(base) == 0; |
2456 return false; |
2460 } |
2457 } |
|
2458 |
|
2459 } |
2461 } |
2460 |
2462 |
2461 size_t os::large_page_size() { |
2463 size_t os::large_page_size() { |
2462 return _large_page_size; |
2464 return _large_page_size; |
2463 } |
2465 } |