diff options
Diffstat (limited to 'tools/lldb-perf/lib/MemoryGauge.h')
-rw-r--r-- | tools/lldb-perf/lib/MemoryGauge.h | 147 |
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__ |