| Index: runtime/bin/process_macos.cc | 
| diff --git a/runtime/bin/process_macos.cc b/runtime/bin/process_macos.cc | 
| index a4420d21251a36e2f4a5bcc0939356760a52ab53..6c0d451712f5bf8f2a48b82a945c9ff00430ce89 100644 | 
| --- a/runtime/bin/process_macos.cc | 
| +++ b/runtime/bin/process_macos.cc | 
| @@ -14,6 +14,7 @@ | 
| #endif | 
| #include <errno.h>   // NOLINT | 
| #include <fcntl.h>   // NOLINT | 
| +#include <mach/mach.h>  // NOLINT | 
| #include <poll.h>    // NOLINT | 
| #include <signal.h>  // NOLINT | 
| #include <stdio.h>   // NOLINT | 
| @@ -968,6 +969,30 @@ intptr_t Process::CurrentProcessId() { | 
| } | 
|  | 
|  | 
| +int64_t Process::CurrentRSS() { | 
| +  struct mach_task_basic_info info; | 
| +  mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT; | 
| +  kern_return_t result = | 
| +      task_info(mach_task_self(), MACH_TASK_BASIC_INFO, | 
| +                reinterpret_cast<task_info_t>(&info), &infoCount); | 
| +  if (result != KERN_SUCCESS) { | 
| +    return -1; | 
| +  } | 
| +  return info.resident_size; | 
| +} | 
| + | 
| + | 
| +int64_t Process::MaxRSS() { | 
| +  struct rusage usage; | 
| +  usage.ru_maxrss = 0; | 
| +  int r = getrusage(RUSAGE_SELF, &usage); | 
| +  if (r < 0) { | 
| +    return -1; | 
| +  } | 
| +  return usage.ru_maxrss; | 
| +} | 
| + | 
| + | 
| static Mutex* signal_mutex = new Mutex(); | 
| static SignalInfo* signal_handlers = NULL; | 
| static const int kSignalsCount = 7; | 
|  |