forked from OSchip/llvm-project
148 lines
2.7 KiB
C++
148 lines
2.7 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__
|