src/os/bsd/vm/os_bsd.cpp

changeset 7074
833b0f92429a
parent 6918
d22136881b85
child 7535
7ae4e26cb1e0
child 7633
8461d0b03127
equal deleted inserted replaced
7073:4d3a43351904 7074:833b0f92429a
2432 } 2432 }
2433 return NULL; 2433 return NULL;
2434 } 2434 }
2435 2435
2436 // The memory is committed 2436 // The memory is committed
2437 MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, mtNone, CALLER_PC); 2437 MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, CALLER_PC);
2438 2438
2439 return addr; 2439 return addr;
2440 } 2440 }
2441 2441
2442 bool os::release_memory_special(char* base, size_t bytes) { 2442 bool os::release_memory_special(char* base, size_t bytes) {
2443 MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker(); 2443 if (MemTracker::tracking_level() > NMT_minimal) {
2444 // detaching the SHM segment will also delete it, see reserve_memory_special() 2444 Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
2445 int rslt = shmdt(base); 2445 // detaching the SHM segment will also delete it, see reserve_memory_special()
2446 if (rslt == 0) { 2446 int rslt = shmdt(base);
2447 tkr.record((address)base, bytes); 2447 if (rslt == 0) {
2448 return true; 2448 tkr.record((address)base, bytes);
2449 return true;
2450 } else {
2451 return false;
2452 }
2449 } else { 2453 } else {
2450 tkr.discard(); 2454 return shmdt(base) == 0;
2451 return false; 2455 }
2452 }
2453
2454 } 2456 }
2455 2457
2456 size_t os::large_page_size() { 2458 size_t os::large_page_size() {
2457 return _large_page_size; 2459 return _large_page_size;
2458 } 2460 }

mercurial