1//===-- MemoryGauge.h -------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef __PerfTestDriver__MemoryGauge__ 11#define __PerfTestDriver__MemoryGauge__ 12 13#include "Gauge.h" 14#include "Results.h" 15 16#include <mach/task_info.h> 17 18namespace lldb_perf { 19 20class MemoryStats 21{ 22public: 23 MemoryStats (mach_vm_size_t virtual_size = 0, 24 mach_vm_size_t resident_size = 0, 25 mach_vm_size_t max_resident_size = 0); 26 MemoryStats (const MemoryStats& rhs); 27 28 MemoryStats& 29 operator = (const MemoryStats& rhs); 30 31 MemoryStats& 32 operator += (const MemoryStats& rhs); 33 34 MemoryStats 35 operator - (const MemoryStats& rhs); 36 37 MemoryStats 38 operator + (const MemoryStats& rhs); 39 40 MemoryStats 41 operator / (size_t rhs); 42 43 MemoryStats 44 operator * (const MemoryStats& rhs); 45 46 mach_vm_size_t 47 GetVirtualSize () const 48 { 49 return m_virtual_size; 50 } 51 52 mach_vm_size_t 53 GetResidentSize () const 54 { 55 return m_resident_size; 56 } 57 58 mach_vm_size_t 59 GetMaxResidentSize () const 60 { 61 return m_max_resident_size; 62 } 63 64 void 65 SetVirtualSize (mach_vm_size_t vs) 66 { 67 m_virtual_size = vs; 68 } 69 70 void 71 SetResidentSize (mach_vm_size_t rs) 72 { 73 m_resident_size = rs; 74 } 75 76 void 77 SetMaxResidentSize (mach_vm_size_t mrs) 78 { 79 m_max_resident_size = mrs; 80 } 81 82 Results::ResultSP 83 GetResult (const char *name, const char *description) const; 84private: 85 mach_vm_size_t m_virtual_size; 86 mach_vm_size_t m_resident_size; 87 mach_vm_size_t m_max_resident_size; 88}; 89 90class MemoryGauge : public Gauge<MemoryStats> 91{ 92public: 93 MemoryGauge (); 94 95 virtual 96 ~MemoryGauge () 97 { 98 } 99 100 void 101 Start (); 102 103 ValueType 104 Stop (); 105 106 virtual ValueType 107 GetStartValue() const 108 { 109 return m_start; 110 } 111 112 virtual ValueType 113 GetStopValue() const 114 { 115 return m_stop; 116 } 117 118 virtual ValueType 119 GetDeltaValue() const; 120 121private: 122 enum class State 123 { 124 eNeverUsed, 125 eCounting, 126 eStopped 127 }; 128 129 ValueType 130 Now (); 131 132 State m_state; 133 ValueType m_start; 134 ValueType m_stop; 135 ValueType m_delta; 136}; 137 138template <> 139Results::ResultSP 140GetResult (const char *description, MemoryStats value); 141 142} // namespace lldb_perf 143 144lldb_perf::MemoryStats 145sqrt (const lldb_perf::MemoryStats& arg); 146 147#endif // #ifndef __PerfTestDriver__MemoryGauge__ 148