Making MemoryGauge work by fixing a Mach API call mistake - saving (and dumping) more information out of the task_info call
llvm-svn: 177580
diff --git a/lldb/tools/lldb-perf/lib/Metric.cpp b/lldb/tools/lldb-perf/lib/Metric.cpp
index ba56c03..afacc9b 100644
--- a/lldb/tools/lldb-perf/lib/Metric.cpp
+++ b/lldb/tools/lldb-perf/lib/Metric.cpp
@@ -11,6 +11,7 @@
#include "CFCMutableArray.h"
#include "CFCMutableDictionary.h"
#include "CFCString.h"
+#include "MemoryGauge.h"
using namespace lldb_perf;
@@ -70,8 +71,8 @@
return m_description.c_str();
}
-template <class T>
-void Metric<T>::WriteImpl (CFCMutableArray& parent, identity<double>)
+template <>
+void Metric<double>::WriteImpl (CFCMutableArray& parent, identity<double>)
{
CFCMutableDictionary dict;
dict.AddValueCString(CFCString("name").get(),name(), true);
@@ -80,15 +81,24 @@
parent.AppendValue(dict.get(), true);
}
-template <class T>
-void Metric<T>::WriteImpl (CFCMutableArray& parent, identity<mach_vm_size_t>)
+template <>
+void Metric<MemoryStats>::WriteImpl (CFCMutableArray& parent, identity<MemoryStats>)
{
CFCMutableDictionary dict;
dict.AddValueCString(CFCString("name").get(),name(), true);
dict.AddValueCString(CFCString("description").get(),description(), true);
- dict.AddValueUInt64(CFCString("value").get(),this->average(), true);
+ CFCMutableDictionary value;
+
+ auto avg = this->average();
+
+ value.AddValueUInt64(CFCString("virtual").get(), avg.GetVirtualSize(), true);
+ value.AddValueUInt64(CFCString("resident").get(), avg.GetResidentSize(), true);
+ value.AddValueUInt64(CFCString("max_resident").get(), avg.GetMaxResidentSize(), true);
+
+ dict.AddValue(CFCString("value").get(),value.get(), true);
+
parent.AppendValue(dict.get(), true);
}
template class lldb_perf::Metric<double>;
-template class lldb_perf::Metric<mach_vm_size_t>;
+template class lldb_perf::Metric<MemoryStats>;