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 }
|