< prev index next >

src/share/vm/runtime/os.cpp

Print this page
rev 11970 : imported patch 8157952-parallelize-memory-pretouch


1688   } else {
1689     res = pd_uncommit_memory(addr, bytes);
1690   }
1691   return res;
1692 }
1693 
1694 bool os::release_memory(char* addr, size_t bytes) {
1695   bool res;
1696   if (MemTracker::tracking_level() > NMT_minimal) {
1697     Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
1698     res = pd_release_memory(addr, bytes);
1699     if (res) {
1700       tkr.record((address)addr, bytes);
1701     }
1702   } else {
1703     res = pd_release_memory(addr, bytes);
1704   }
1705   return res;
1706 }
1707 
1708 void os::pretouch_memory(void* start, void* end) {
1709   for (volatile char *p = (char*)start; p < (char*)end; p += os::vm_page_size()) {
1710     *p = 0;
1711   }
1712 }
1713 
1714 char* os::map_memory(int fd, const char* file_name, size_t file_offset,
1715                            char *addr, size_t bytes, bool read_only,
1716                            bool allow_exec) {
1717   char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec);
1718   if (result != NULL) {
1719     MemTracker::record_virtual_memory_reserve_and_commit((address)result, bytes, CALLER_PC);
1720   }
1721   return result;
1722 }
1723 
1724 char* os::remap_memory(int fd, const char* file_name, size_t file_offset,
1725                              char *addr, size_t bytes, bool read_only,
1726                              bool allow_exec) {
1727   return pd_remap_memory(fd, file_name, file_offset, addr, bytes,
1728                     read_only, allow_exec);
1729 }




1688   } else {
1689     res = pd_uncommit_memory(addr, bytes);
1690   }
1691   return res;
1692 }
1693 
1694 bool os::release_memory(char* addr, size_t bytes) {
1695   bool res;
1696   if (MemTracker::tracking_level() > NMT_minimal) {
1697     Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
1698     res = pd_release_memory(addr, bytes);
1699     if (res) {
1700       tkr.record((address)addr, bytes);
1701     }
1702   } else {
1703     res = pd_release_memory(addr, bytes);
1704   }
1705   return res;
1706 }
1707 
1708 void os::pretouch_memory(void* start, void* end, size_t page_size) {
1709   for (volatile char *p = (char*)start; p < (char*)end; p += page_size) {
1710     *p = 0;
1711   }
1712 }
1713 
1714 char* os::map_memory(int fd, const char* file_name, size_t file_offset,
1715                            char *addr, size_t bytes, bool read_only,
1716                            bool allow_exec) {
1717   char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec);
1718   if (result != NULL) {
1719     MemTracker::record_virtual_memory_reserve_and_commit((address)result, bytes, CALLER_PC);
1720   }
1721   return result;
1722 }
1723 
1724 char* os::remap_memory(int fd, const char* file_name, size_t file_offset,
1725                              char *addr, size_t bytes, bool read_only,
1726                              bool allow_exec) {
1727   return pd_remap_memory(fd, file_name, file_offset, addr, bytes,
1728                     read_only, allow_exec);
1729 }


< prev index next >