| Index: base/process/process_metrics_mac.cc
|
| diff --git a/base/process/process_metrics_mac.cc b/base/process/process_metrics_mac.cc
|
| index a3c2d6a14aa6acbd2e07e9afd6a55a836bbb3f10..e63d1468fa2fd812d4d71768ddedf8b70ff38953 100644
|
| --- a/base/process/process_metrics_mac.cc
|
| +++ b/base/process/process_metrics_mac.cc
|
| @@ -110,10 +110,11 @@ size_t ProcessMetrics::GetPeakPagefileUsage() const {
|
| }
|
|
|
| size_t ProcessMetrics::GetWorkingSetSize() const {
|
| - task_basic_info_64 task_info_data;
|
| - if (!GetTaskInfo(TaskForPid(process_), &task_info_data))
|
| + size_t private_bytes = 0;
|
| + size_t shared_bytes = 0;
|
| + if (!GetMemoryBytes(&private_bytes, &shared_bytes))
|
| return 0;
|
| - return task_info_data.resident_size;
|
| + return private_bytes + shared_bytes;
|
| }
|
|
|
| size_t ProcessMetrics::GetPeakWorkingSetSize() const {
|
| @@ -124,7 +125,7 @@ size_t ProcessMetrics::GetPeakWorkingSetSize() const {
|
| // private_bytes is the size of private resident memory.
|
| // shared_bytes is the size of shared resident memory.
|
| bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes,
|
| - size_t* shared_bytes) {
|
| + size_t* shared_bytes) const {
|
| size_t private_pages_count = 0;
|
| size_t shared_pages_count = 0;
|
|
|
| @@ -189,6 +190,7 @@ bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes,
|
| info.share_mode = SM_PRIVATE;
|
|
|
| switch (info.share_mode) {
|
| + case SM_LARGE_PAGE:
|
| case SM_PRIVATE:
|
| private_pages_count += info.private_pages_resident;
|
| private_pages_count += info.shared_pages_resident;
|
| @@ -197,6 +199,9 @@ bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes,
|
| private_pages_count += info.private_pages_resident;
|
| // Fall through
|
| case SM_SHARED:
|
| + case SM_PRIVATE_ALIASED:
|
| + case SM_TRUESHARED:
|
| + case SM_SHARED_ALIASED:
|
| if (seen_objects.count(info.obj_id) == 0) {
|
| // Only count the first reference to this region.
|
| seen_objects.insert(info.obj_id);
|
|
|