forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- 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__
 |