diff options
Diffstat (limited to 'lldb/tools/lldb-perf/lib/MemoryGauge.cpp')
-rw-r--r-- | lldb/tools/lldb-perf/lib/MemoryGauge.cpp | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/lldb/tools/lldb-perf/lib/MemoryGauge.cpp b/lldb/tools/lldb-perf/lib/MemoryGauge.cpp index a53b0aca471..6e460081b27 100644 --- a/lldb/tools/lldb-perf/lib/MemoryGauge.cpp +++ b/lldb/tools/lldb-perf/lib/MemoryGauge.cpp @@ -9,6 +9,7 @@ #include "MemoryGauge.h" #include <assert.h> +#include <cmath> #include <mach/mach.h> #include <mach/task.h> #include <mach/mach_traps.h> @@ -61,13 +62,30 @@ MemoryStats::operator - (const MemoryStats& rhs) m_max_resident_size - rhs.m_max_resident_size); } -MemoryStats& +MemoryStats +MemoryStats::operator + (const MemoryStats& rhs) +{ + return MemoryStats(m_virtual_size + rhs.m_virtual_size, + m_resident_size + rhs.m_resident_size, + m_max_resident_size + rhs.m_max_resident_size); +} + +MemoryStats MemoryStats::operator / (size_t n) { - m_virtual_size /= n; - m_resident_size /= n; - m_max_resident_size /= n; - return *this; + MemoryStats result(*this); + result.m_virtual_size /= n; + result.m_resident_size /= n; + result.m_max_resident_size /= n; + return result; +} + +MemoryStats +MemoryStats::operator * (const MemoryStats& rhs) +{ + return MemoryStats(m_virtual_size * rhs.m_virtual_size, + m_resident_size * rhs.m_resident_size, + m_max_resident_size * rhs.m_max_resident_size); } Results::ResultSP @@ -130,3 +148,17 @@ lldb_perf::GetResult (const char *description, MemoryStats value) { return value.GetResult (NULL, description); } + +MemoryStats +sqrt (const MemoryStats& arg) +{ + long double virt_size = arg.GetVirtualSize(); + long double resident_size = arg.GetResidentSize(); + long double max_resident_size = arg.GetMaxResidentSize(); + + virt_size = sqrtl(virt_size); + resident_size = sqrtl(resident_size); + max_resident_size = sqrtl(max_resident_size); + + return MemoryStats(virt_size,resident_size,max_resident_size); +} |