1573 }
1574 return res;
1575 }
1576
1577 bool os::release_memory(char* addr, size_t bytes) {
1578 bool res;
1579 if (MemTracker::tracking_level() > NMT_minimal) {
1580 Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
1581 res = pd_release_memory(addr, bytes);
1582 if (res) {
1583 tkr.record((address)addr, bytes);
1584 }
1585 } else {
1586 res = pd_release_memory(addr, bytes);
1587 }
1588 return res;
1589 }
1590
1591 void os::pretouch_memory(char* start, char* end) {
1592 for (volatile char *p = start; p < end; p += os::vm_page_size()) {
1593 char t = *p; *p = t;
1594 }
1595 }
1596
1597 char* os::map_memory(int fd, const char* file_name, size_t file_offset,
1598 char *addr, size_t bytes, bool read_only,
1599 bool allow_exec) {
1600 char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec);
1601 if (result != NULL) {
1602 MemTracker::record_virtual_memory_reserve_and_commit((address)result, bytes, CALLER_PC);
1603 }
1604 return result;
1605 }
1606
1607 char* os::remap_memory(int fd, const char* file_name, size_t file_offset,
1608 char *addr, size_t bytes, bool read_only,
1609 bool allow_exec) {
1610 return pd_remap_memory(fd, file_name, file_offset, addr, bytes,
1611 read_only, allow_exec);
1612 }
1613
|
1573 }
1574 return res;
1575 }
1576
1577 bool os::release_memory(char* addr, size_t bytes) {
1578 bool res;
1579 if (MemTracker::tracking_level() > NMT_minimal) {
1580 Tracker tkr = MemTracker::get_virtual_memory_release_tracker();
1581 res = pd_release_memory(addr, bytes);
1582 if (res) {
1583 tkr.record((address)addr, bytes);
1584 }
1585 } else {
1586 res = pd_release_memory(addr, bytes);
1587 }
1588 return res;
1589 }
1590
1591 void os::pretouch_memory(char* start, char* end) {
1592 for (volatile char *p = start; p < end; p += os::vm_page_size()) {
1593 *p = 0;
1594 }
1595 }
1596
1597 char* os::map_memory(int fd, const char* file_name, size_t file_offset,
1598 char *addr, size_t bytes, bool read_only,
1599 bool allow_exec) {
1600 char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec);
1601 if (result != NULL) {
1602 MemTracker::record_virtual_memory_reserve_and_commit((address)result, bytes, CALLER_PC);
1603 }
1604 return result;
1605 }
1606
1607 char* os::remap_memory(int fd, const char* file_name, size_t file_offset,
1608 char *addr, size_t bytes, bool read_only,
1609 bool allow_exec) {
1610 return pd_remap_memory(fd, file_name, file_offset, addr, bytes,
1611 read_only, allow_exec);
1612 }
1613
|