Mercurial > hg > graal-compiler
changeset 12856:3e265ce4d2dd
8025942: os::Bsd::available_memory() needs implementation
Summary: Implement using the host_statistics64() api.
Reviewed-by: dsamersoff, morris, dholmes, coleenp, hseigel, dcubed
Contributed-by: gerard.ziemski@oracle.com
author | hseigel |
---|---|
date | Sat, 12 Oct 2013 13:09:18 -0400 |
parents | 83dbf427fedd |
children | d37a0525c0fe |
files | src/os/bsd/vm/os_bsd.cpp |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/os/bsd/vm/os_bsd.cpp Fri Oct 11 22:22:19 2013 -0400 +++ b/src/os/bsd/vm/os_bsd.cpp Sat Oct 12 13:09:18 2013 -0400 @@ -159,9 +159,21 @@ return Bsd::available_memory(); } +// available here means free julong os::Bsd::available_memory() { - // XXXBSD: this is just a stopgap implementation - return physical_memory() >> 2; + uint64_t available = physical_memory() >> 2; +#ifdef __APPLE__ + mach_msg_type_number_t count = HOST_VM_INFO64_COUNT; + vm_statistics64_data_t vmstat; + kern_return_t kerr = host_statistics64(mach_host_self(), HOST_VM_INFO64, + (host_info64_t)&vmstat, &count); + assert(kerr == KERN_SUCCESS, + "host_statistics64 failed - check mach_host_self() and count"); + if (kerr == KERN_SUCCESS) { + available = vmstat.free_count * os::vm_page_size(); + } +#endif + return available; } julong os::physical_memory() {