aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-perf/lib/MemoryGauge.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-perf/lib/MemoryGauge.h')
-rw-r--r--tools/lldb-perf/lib/MemoryGauge.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/tools/lldb-perf/lib/MemoryGauge.h b/tools/lldb-perf/lib/MemoryGauge.h
new file mode 100644
index 000000000000..a1221b6b66cc
--- /dev/null
+++ b/tools/lldb-perf/lib/MemoryGauge.h
@@ -0,0 +1,147 @@
+//===-- MemoryGauge.h -------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef __PerfTestDriver__MemoryGauge__
+#define __PerfTestDriver__MemoryGauge__
+
+#include "Gauge.h"
+#include "Results.h"
+
+#include <mach/task_info.h>
+
+namespace lldb_perf {
+
+class MemoryStats
+{
+public:
+ MemoryStats (mach_vm_size_t virtual_size = 0,
+ mach_vm_size_t resident_size = 0,
+ mach_vm_size_t max_resident_size = 0);
+ MemoryStats (const MemoryStats& rhs);
+
+ MemoryStats&
+ operator = (const MemoryStats& rhs);
+
+ MemoryStats&
+ operator += (const MemoryStats& rhs);
+
+ MemoryStats
+ operator - (const MemoryStats& rhs);
+
+ MemoryStats
+ operator + (const MemoryStats& rhs);
+
+ MemoryStats
+ operator / (size_t rhs);
+
+ MemoryStats
+ operator * (const MemoryStats& rhs);
+
+ mach_vm_size_t
+ GetVirtualSize () const
+ {
+ return m_virtual_size;
+ }
+
+ mach_vm_size_t
+ GetResidentSize () const
+ {
+ return m_resident_size;
+ }
+
+ mach_vm_size_t
+ GetMaxResidentSize () const
+ {
+ return m_max_resident_size;
+ }
+
+ void
+ SetVirtualSize (mach_vm_size_t vs)
+ {
+ m_virtual_size = vs;
+ }
+
+ void
+ SetResidentSize (mach_vm_size_t rs)
+ {
+ m_resident_size = rs;
+ }
+
+ void
+ SetMaxResidentSize (mach_vm_size_t mrs)
+ {
+ m_max_resident_size = mrs;
+ }
+
+ Results::ResultSP
+ GetResult (const char *name, const char *description) const;
+private:
+ mach_vm_size_t m_virtual_size;
+ mach_vm_size_t m_resident_size;
+ mach_vm_size_t m_max_resident_size;
+};
+
+class MemoryGauge : public Gauge<MemoryStats>
+{
+public:
+ MemoryGauge ();
+
+ virtual
+ ~MemoryGauge ()
+ {
+ }
+
+ void
+ Start ();
+
+ ValueType
+ Stop ();
+
+ virtual ValueType
+ GetStartValue() const
+ {
+ return m_start;
+ }
+
+ virtual ValueType
+ GetStopValue() const
+ {
+ return m_stop;
+ }
+
+ virtual ValueType
+ GetDeltaValue() const;
+
+private:
+ enum class State
+ {
+ eNeverUsed,
+ eCounting,
+ eStopped
+ };
+
+ ValueType
+ Now ();
+
+ State m_state;
+ ValueType m_start;
+ ValueType m_stop;
+ ValueType m_delta;
+};
+
+template <>
+Results::ResultSP
+GetResult (const char *description, MemoryStats value);
+
+} // namespace lldb_perf
+
+lldb_perf::MemoryStats
+sqrt (const lldb_perf::MemoryStats& arg);
+
+#endif // #ifndef __PerfTestDriver__MemoryGauge__