hotspot/src/os/bsd/vm/os_bsd.cpp
changeset 25946 1572c9f03fb9
parent 25503 9f471b837330
child 26683 a02753d5a0b2
child 26409 9f717958a2bb
equal deleted inserted replaced
25902:7e9ffb1fe1df 25946:1572c9f03fb9
  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 }