LLVM  10.0.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::sampleprof::SampleRecord Class Reference

Representation of a single sample record. More...

#include "llvm/ProfileData/SampleProf.h"

Classes

struct  CallTargetComparator
 

Public Types

using CallTarget = std::pair< StringRef, uint64_t >
 
using SortedCallTargetSet = std::set< CallTarget, CallTargetComparator >
 
using CallTargetMap = StringMap< uint64_t >
 

Public Member Functions

 SampleRecord ()=default
 
sampleprof_error addSamples (uint64_t S, uint64_t Weight=1)
 Increment the number of samples for this record by S. More...
 
sampleprof_error addCalledTarget (StringRef F, uint64_t S, uint64_t Weight=1)
 Add called function F with samples S. More...
 
bool hasCalls () const
 Return true if this sample record contains function calls. More...
 
uint64_t getSamples () const
 
const CallTargetMapgetCallTargets () const
 
const SortedCallTargetSet getSortedCallTargets () const
 
sampleprof_error merge (const SampleRecord &Other, uint64_t Weight=1)
 Merge the samples in Other into this record. More...
 
void print (raw_ostream &OS, unsigned Indent) const
 Print the sample record to the stream OS indented by Indent. More...
 
void dump () const
 

Static Public Member Functions

static const SortedCallTargetSet SortCallTargets (const CallTargetMap &Targets)
 Sort call targets in descending order of call frequency. More...
 

Detailed Description

Representation of a single sample record.

A sample record is represented by a positive integer value, which indicates how frequently was the associated line location executed.

Additionally, if the associated location contains a function call, the record will hold a list of all the possible called targets. For direct calls, this will be the exact function being invoked. For indirect calls (function pointers, virtual table dispatch), this will be a list of one or more functions.

Definition at line 206 of file SampleProf.h.

Member Typedef Documentation

◆ CallTarget

Definition at line 208 of file SampleProf.h.

◆ CallTargetMap

Definition at line 219 of file SampleProf.h.

◆ SortedCallTargetSet

Definition at line 218 of file SampleProf.h.

Constructor & Destructor Documentation

◆ SampleRecord()

llvm::sampleprof::SampleRecord::SampleRecord ( )
default

Member Function Documentation

◆ addCalledTarget()

sampleprof_error llvm::sampleprof::SampleRecord::addCalledTarget ( StringRef  F,
uint64_t  S,
uint64_t  Weight = 1 
)
inline

Add called function F with samples S.

Optionally scale sample count S by Weight.

Sample counts accumulate using saturating arithmetic, to avoid wrapping around unsigned integers.

Definition at line 239 of file SampleProf.h.

References llvm::counter_overflow, F(), llvm::SaturatingMultiplyAdd(), and llvm::success.

◆ addSamples()

sampleprof_error llvm::sampleprof::SampleRecord::addSamples ( uint64_t  S,
uint64_t  Weight = 1 
)
inline

Increment the number of samples for this record by S.

Optionally scale sample count S by Weight.

Sample counts accumulate using saturating arithmetic, to avoid wrapping around unsigned integers.

Definition at line 227 of file SampleProf.h.

References llvm::counter_overflow, llvm::SaturatingMultiplyAdd(), and llvm::success.

◆ dump()

LLVM_DUMP_METHOD void SampleRecord::dump ( ) const

Definition at line 118 of file SampleProf.cpp.

References llvm::dbgs(), and print().

◆ getCallTargets()

const CallTargetMap& llvm::sampleprof::SampleRecord::getCallTargets ( ) const
inline

◆ getSamples()

uint64_t llvm::sampleprof::SampleRecord::getSamples ( ) const
inline

◆ getSortedCallTargets()

const SortedCallTargetSet llvm::sampleprof::SampleRecord::getSortedCallTargets ( ) const
inline

◆ hasCalls()

bool llvm::sampleprof::SampleRecord::hasCalls ( ) const
inline

Return true if this sample record contains function calls.

Definition at line 250 of file SampleProf.h.

◆ merge()

sampleprof_error llvm::sampleprof::SampleRecord::merge ( const SampleRecord Other,
uint64_t  Weight = 1 
)
inline

Merge the samples in Other into this record.

Optionally scale sample counts by Weight.

Definition at line 269 of file SampleProf.h.

References llvm::dump(), getCallTargets(), getSamples(), I, llvm::MergeResult(), llvm::operator<<(), and print().

◆ print()

void SampleRecord::print ( raw_ostream OS,
unsigned  Indent 
) const

Print the sample record to the stream OS indented by Indent.

Definition at line 107 of file SampleProf.cpp.

References I.

Referenced by llvm::sampleprof::operator<<().

◆ SortCallTargets()

static const SortedCallTargetSet llvm::sampleprof::SampleRecord::SortCallTargets ( const CallTargetMap Targets)
inlinestatic

Sort call targets in descending order of call frequency.

Definition at line 259 of file SampleProf.h.

References I.

Referenced by GetSortedValueDataFromCallTargets().


The documentation for this class was generated from the following files: