LLVM 19.0.0git
Classes | Typedefs | Enumerations | Functions | Variables
llvm::memprof Namespace Reference

Classes

struct  AllocationInfo
 
class  CallStack
 Helper class to iterate through stack ids in both metadata (memprof MIB and callsite) and the corresponding ThinLTO summary data structures (CallsiteInfo and MIBInfo). More...
 
class  CallStackTrie
 Class to build a trie of call stack contexts for a particular profiled allocation call, along with their associated allocation types. More...
 
struct  Frame
 
class  FrameLookupTrait
 
class  FrameWriterTrait
 
struct  IndexedAllocationInfo
 
struct  IndexedMemProfRecord
 
class  MemProfReader
 
struct  MemProfRecord
 
struct  PortableMemInfoBlock
 
class  RawMemProfReader
 
class  RecordLookupTrait
 
class  RecordWriterTrait
 

Typedefs

using MemProfSchema = llvm::SmallVector< Meta, static_cast< int >(Meta::Size)>
 
using FrameId = uint64_t
 
using CallStackId = uint64_t
 
using CallStackMap = llvm::DenseMap< uint64_t, llvm::SmallVector< uint64_t > >
 

Enumerations

enum  IndexedVersion : uint64_t { Version0 = 0 , Version1 = 1 , Version2 = 2 }
 
enum class  Meta : uint64_t { Start = 0 , MIBEntryDef , Size }
 

Functions

AllocationType getAllocType (uint64_t TotalLifetimeAccessDensity, uint64_t AllocCount, uint64_t TotalLifetime)
 Return the allocation type for a given set of memory profile values.
 
MDNodebuildCallstackMetadata (ArrayRef< uint64_t > CallStack, LLVMContext &Ctx)
 Build callstack metadata from the provided list of call stack ids.
 
MDNodegetMIBStackNode (const MDNode *MIB)
 Returns the stack node from an MIB metadata node.
 
AllocationType getMIBAllocType (const MDNode *MIB)
 Returns the allocation type from an MIB metadata node.
 
std::string getAllocTypeAttributeString (AllocationType Type)
 Returns the string to use in attributes with the given type.
 
bool hasSingleAllocType (uint8_t AllocTypes)
 True if the AllocTypes bitmask contains just a single type.
 
Expected< MemProfSchemareadMemProfSchema (const unsigned char *&Buffer)
 
CallStackId hashCallStack (ArrayRef< FrameId > CS)
 
void verifyIndexedMemProfRecord (const IndexedMemProfRecord &Record)
 
void verifyFunctionProfileData (const llvm::MapVector< GlobalValue::GUID, IndexedMemProfRecord > &FunctionProfileData)
 
static size_t serializedSizeV0 (const IndexedAllocationInfo &IAI)
 
static size_t serializedSizeV2 (const IndexedAllocationInfo &IAI)
 
static size_t serializedSizeV0 (const IndexedMemProfRecord &Record)
 
static size_t serializedSizeV2 (const IndexedMemProfRecord &Record)
 
static void serializeV0 (const IndexedMemProfRecord &Record, const MemProfSchema &Schema, raw_ostream &OS)
 
static void serializeV2 (const IndexedMemProfRecord &Record, const MemProfSchema &Schema, raw_ostream &OS)
 
static IndexedMemProfRecord deserializeV0 (const MemProfSchema &Schema, const unsigned char *Ptr)
 
static IndexedMemProfRecord deserializeV2 (const MemProfSchema &Schema, const unsigned char *Ptr)
 

Variables

constexpr uint64_t MinimumSupportedVersion = Version0
 
constexpr uint64_t MaximumSupportedVersion = Version1
 

Typedef Documentation

◆ CallStackId

Definition at line 274 of file MemProf.h.

◆ CallStackMap

Definition at line 130 of file MemProfReader.h.

◆ FrameId

Definition at line 156 of file MemProf.h.

◆ MemProfSchema

using llvm::memprof::MemProfSchema = typedef llvm::SmallVector<Meta, static_cast<int>(Meta::Size)>

Definition at line 45 of file MemProf.h.

Enumeration Type Documentation

◆ IndexedVersion

Enumerator
Version0 
Version1 
Version2 

Definition at line 22 of file MemProf.h.

◆ Meta

enum class llvm::memprof::Meta : uint64_t
strong
Enumerator
Start 
MIBEntryDef 
Size 

Definition at line 37 of file MemProf.h.

Function Documentation

◆ buildCallstackMetadata()

MDNode * llvm::memprof::buildCallstackMetadata ( ArrayRef< uint64_t CallStack,
LLVMContext Ctx 
)

Build callstack metadata from the provided list of call stack ids.

Returns the resulting metadata node.

Definition at line 65 of file MemoryProfileInfo.cpp.

References llvm::MDNode::get(), llvm::ValueAsMetadata::get(), and llvm::Type::getInt64Ty().

Referenced by addCallsiteMetadata(), and createMIBNode().

◆ deserializeV0()

static IndexedMemProfRecord llvm::memprof::deserializeV0 ( const MemProfSchema Schema,
const unsigned char Ptr 
)
static

◆ deserializeV2()

static IndexedMemProfRecord llvm::memprof::deserializeV2 ( const MemProfSchema Schema,
const unsigned char Ptr 
)
static

◆ getAllocType()

AllocationType llvm::memprof::getAllocType ( uint64_t  TotalLifetimeAccessDensity,
uint64_t  AllocCount,
uint64_t  TotalLifetime 
)

Return the allocation type for a given set of memory profile values.

Definition at line 44 of file MemoryProfileInfo.cpp.

References MemProfAveLifetimeColdThreshold, MemProfLifetimeAccessDensityColdThreshold, and MemProfMinAveLifetimeAccessDensityHotThreshold.

Referenced by addCallStack().

◆ getAllocTypeAttributeString()

std::string llvm::memprof::getAllocTypeAttributeString ( AllocationType  Type)

Returns the string to use in attributes with the given type.

Definition at line 97 of file MemoryProfileInfo.cpp.

References assert(), and llvm_unreachable.

Referenced by addAllocTypeAttribute(), and createMIBNode().

◆ getMIBAllocType()

AllocationType llvm::memprof::getMIBAllocType ( const MDNode MIB)

Returns the allocation type from an MIB metadata node.

Definition at line 82 of file MemoryProfileInfo.cpp.

References assert(), llvm::MDNode::getNumOperands(), and llvm::MDNode::getOperand().

Referenced by llvm::memprof::CallStackTrie::addCallStack(), and computeFunctionSummary().

◆ getMIBStackNode()

MDNode * llvm::memprof::getMIBStackNode ( const MDNode MIB)

Returns the stack node from an MIB metadata node.

Definition at line 76 of file MemoryProfileInfo.cpp.

References assert(), llvm::MDNode::getNumOperands(), and llvm::MDNode::getOperand().

Referenced by llvm::memprof::CallStackTrie::addCallStack(), computeFunctionSummary(), and propagateMemProfHelper().

◆ hashCallStack()

CallStackId llvm::memprof::hashCallStack ( ArrayRef< FrameId CS)

◆ hasSingleAllocType()

bool llvm::memprof::hasSingleAllocType ( uint8_t  AllocTypes)

True if the AllocTypes bitmask contains just a single type.

Definition at line 121 of file MemoryProfileInfo.cpp.

References assert(), and llvm::popcount().

Referenced by llvm::memprof::CallStackTrie::buildAndAttachMIBMetadata().

◆ readMemProfSchema()

Expected< MemProfSchema > llvm::memprof::readMemProfSchema ( const unsigned char *&  Buffer)

Definition at line 260 of file MemProf.cpp.

References I, llvm::malformed, Ptr, and Size.

Referenced by llvm::IndexedInstrProfReader::readHeader().

◆ serializedSizeV0() [1/2]

static size_t llvm::memprof::serializedSizeV0 ( const IndexedAllocationInfo IAI)
static

◆ serializedSizeV0() [2/2]

static size_t llvm::memprof::serializedSizeV0 ( const IndexedMemProfRecord Record)
static

Definition at line 44 of file MemProf.cpp.

References N, and Version0.

◆ serializedSizeV2() [1/2]

static size_t llvm::memprof::serializedSizeV2 ( const IndexedAllocationInfo IAI)
static

◆ serializedSizeV2() [2/2]

static size_t llvm::memprof::serializedSizeV2 ( const IndexedMemProfRecord Record)
static

Definition at line 60 of file MemProf.cpp.

References N, and Version2.

◆ serializeV0()

static void llvm::memprof::serializeV0 ( const IndexedMemProfRecord Record,
const MemProfSchema Schema,
raw_ostream OS 
)
static

Definition at line 84 of file MemProf.cpp.

References llvm::little, N, and OS.

Referenced by llvm::memprof::IndexedMemProfRecord::serialize().

◆ serializeV2()

static void llvm::memprof::serializeV2 ( const IndexedMemProfRecord Record,
const MemProfSchema Schema,
raw_ostream OS 
)
static

Definition at line 107 of file MemProf.cpp.

References llvm::little, N, and OS.

Referenced by llvm::memprof::IndexedMemProfRecord::serialize().

◆ verifyFunctionProfileData()

void llvm::memprof::verifyFunctionProfileData ( const llvm::MapVector< GlobalValue::GUID, IndexedMemProfRecord > &  FunctionProfileData)

Definition at line 304 of file MemProf.cpp.

References verifyIndexedMemProfRecord().

◆ verifyIndexedMemProfRecord()

void llvm::memprof::verifyIndexedMemProfRecord ( const IndexedMemProfRecord Record)

Definition at line 297 of file MemProf.cpp.

References assert(), and hashCallStack().

Referenced by verifyFunctionProfileData().

Variable Documentation

◆ MaximumSupportedVersion

constexpr uint64_t llvm::memprof::MaximumSupportedVersion = Version1
constexpr

Definition at line 32 of file MemProf.h.

Referenced by llvm::IndexedInstrProfReader::readHeader(), and writeMemProf().

◆ MinimumSupportedVersion

constexpr uint64_t llvm::memprof::MinimumSupportedVersion = Version0
constexpr

Definition at line 31 of file MemProf.h.

Referenced by llvm::IndexedInstrProfReader::readHeader(), and writeMemProf().