| //===-- 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__ |