hotspot/src/os/bsd/vm/os_bsd.cpp
changeset 18086 f44cf213a775
parent 18069 e6d4971c8650
child 18683 a6418e038255
child 22809 8f0522f038d3
equal deleted inserted replaced
18084:c2e807acd8c5 18086:f44cf213a775
  2352      }
  2352      }
  2353      return NULL;
  2353      return NULL;
  2354   }
  2354   }
  2355 
  2355 
  2356   // The memory is committed
  2356   // The memory is committed
  2357   address pc = CALLER_PC;
  2357   MemTracker::record_virtual_memory_reserve_and_commit((address)addr, bytes, mtNone, CALLER_PC);
  2358   MemTracker::record_virtual_memory_reserve((address)addr, bytes, pc);
       
  2359   MemTracker::record_virtual_memory_commit((address)addr, bytes, pc);
       
  2360 
  2358 
  2361   return addr;
  2359   return addr;
  2362 }
  2360 }
  2363 
  2361 
  2364 bool os::release_memory_special(char* base, size_t bytes) {
  2362 bool os::release_memory_special(char* base, size_t bytes) {
       
  2363   MemTracker::Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
  2365   // detaching the SHM segment will also delete it, see reserve_memory_special()
  2364   // detaching the SHM segment will also delete it, see reserve_memory_special()
  2366   int rslt = shmdt(base);
  2365   int rslt = shmdt(base);
  2367   if (rslt == 0) {
  2366   if (rslt == 0) {
  2368     MemTracker::record_virtual_memory_uncommit((address)base, bytes);
  2367     tkr.record((address)base, bytes);
  2369     MemTracker::record_virtual_memory_release((address)base, bytes);
       
  2370     return true;
  2368     return true;
  2371   } else {
  2369   } else {
       
  2370     tkr.discard();
  2372     return false;
  2371     return false;
  2373   }
  2372   }
  2374 
  2373 
  2375 }
  2374 }
  2376 
  2375