Index: base/sys_info_mac.mm |
diff --git a/base/sys_info_mac.mm b/base/sys_info_mac.mm |
index 1141bd557768bab8eb387dd62668831edd40bd92..aab1103d4c401d14efc6bf7eecb30c208b9a5d98 100644 |
--- a/base/sys_info_mac.mm |
+++ b/base/sys_info_mac.mm |
@@ -19,7 +19,6 @@ |
#include "base/mac/scoped_mach_port.h" |
#import "base/mac/sdk_forward_declarations.h" |
#include "base/macros.h" |
-#include "base/process/process_metrics.h" |
#include "base/strings/stringprintf.h" |
namespace base { |
@@ -84,12 +83,20 @@ |
// static |
int64_t SysInfo::AmountOfAvailablePhysicalMemory() { |
- SystemMemoryInfoKB info; |
- if (!GetSystemMemoryInfo(&info)) |
+ base::mac::ScopedMachSendRight host(mach_host_self()); |
+ vm_statistics_data_t vm_info; |
+ mach_msg_type_number_t count = HOST_VM_INFO_COUNT; |
+ |
+ if (host_statistics(host.get(), |
+ HOST_VM_INFO, |
+ reinterpret_cast<host_info_t>(&vm_info), |
+ &count) != KERN_SUCCESS) { |
+ NOTREACHED(); |
return 0; |
- // We should add inactive file-backed memory also but there is no such |
- // information from Mac OS unfortunately. |
- return static_cast<int64_t>(info.free + info.speculative) * 1024; |
+ } |
+ |
+ return static_cast<int64_t>(vm_info.free_count - vm_info.speculative_count) * |
+ PAGE_SIZE; |
} |
// static |