LLVM 17.0.0git
|
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 . | |
uint64_t | removeSamples (uint64_t S) |
Decrease the number of samples for this record by S . | |
sampleprof_error | addCalledTarget (StringRef F, uint64_t S, uint64_t Weight=1) |
Add called function F with samples S . | |
uint64_t | removeCalledTarget (StringRef F) |
Remove called function from the call target map. | |
bool | hasCalls () const |
Return true if this sample record contains function calls. | |
uint64_t | getSamples () const |
const CallTargetMap & | getCallTargets () const |
const SortedCallTargetSet | getSortedCallTargets () const |
uint64_t | getCallTargetSum () const |
sampleprof_error | merge (const SampleRecord &Other, uint64_t Weight=1) |
Merge the samples in Other into this record. | |
void | print (raw_ostream &OS, unsigned Indent) const |
Print the sample record to the stream OS indented by Indent . | |
void | dump () const |
bool | operator== (const SampleRecord &Other) const |
bool | operator!= (const SampleRecord &Other) const |
Static Public Member Functions | |
static const SortedCallTargetSet | SortCallTargets (const CallTargetMap &Targets) |
Sort call targets in descending order of call frequency. | |
static const CallTargetMap | adjustCallTargets (const CallTargetMap &Targets, float DistributionFactor) |
Prorate call targets by a distribution factor. | |
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 325 of file SampleProf.h.
using llvm::sampleprof::SampleRecord::CallTarget = std::pair<StringRef, uint64_t> |
Definition at line 327 of file SampleProf.h.
Definition at line 338 of file SampleProf.h.
using llvm::sampleprof::SampleRecord::SortedCallTargetSet = std::set<CallTarget, CallTargetComparator> |
Definition at line 337 of file SampleProf.h.
|
default |
|
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 367 of file SampleProf.h.
References llvm::counter_overflow, F, llvm::SaturatingMultiplyAdd(), and llvm::success.
Referenced by merge().
|
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 346 of file SampleProf.h.
References llvm::counter_overflow, llvm::SaturatingMultiplyAdd(), and llvm::success.
Referenced by llvm::sampleprof::FunctionSamples::addBodySamplesForProbe(), and merge().
|
inlinestatic |
Prorate call targets by a distribution factor.
Definition at line 415 of file SampleProf.h.
References Targets.
LLVM_DUMP_METHOD void SampleRecord::dump | ( | ) | const |
Definition at line 145 of file SampleProf.cpp.
References llvm::dbgs(), and print().
|
inline |
Definition at line 393 of file SampleProf.h.
Referenced by llvm::sampleprof::SampleProfileWriterBinary::addNames(), and llvm::sampleprof::SampleProfileWriterBinary::writeBody().
|
inline |
Definition at line 398 of file SampleProf.h.
References I.
|
inline |
Definition at line 392 of file SampleProf.h.
Referenced by dumpFunctionProfileJson(), llvm::sampleprof::SampleProfileWriterBinary::writeBody(), and llvm::sampleprof::SampleProfileWriterText::writeSample().
|
inline |
Definition at line 394 of file SampleProf.h.
References SortCallTargets().
Referenced by dumpFunctionProfileJson(), print(), llvm::sampleprof::SampleProfileWriterBinary::writeBody(), and llvm::sampleprof::SampleProfileWriterText::writeSample().
|
inline |
Return true if this sample record contains function calls.
Definition at line 390 of file SampleProf.h.
References llvm::StringMapImpl::empty().
Referenced by print().
sampleprof_error SampleRecord::merge | ( | const SampleRecord & | Other, |
uint64_t | Weight = 1 |
||
) |
Merge the samples in Other
into this record.
Optionally scale sample counts by Weight
.
Definition at line 119 of file SampleProf.cpp.
References addCalledTarget(), addSamples(), I, llvm::MergeResult(), and llvm::Other.
|
inline |
Definition at line 434 of file SampleProf.h.
References llvm::Other.
|
inline |
Definition at line 430 of file SampleProf.h.
References llvm::Other.
void SampleRecord::print | ( | raw_ostream & | OS, |
unsigned | Indent | ||
) | const |
Print the sample record to the stream OS
indented by Indent
.
Definition at line 134 of file SampleProf.cpp.
References getSortedCallTargets(), hasCalls(), I, and OS.
Referenced by dump(), and llvm::sampleprof::operator<<().
Remove called function from the call target map.
Return the target sample count of the called function.
Definition at line 379 of file SampleProf.h.
References llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::StringMap< ValueTy, AllocatorTy >::erase(), F, llvm::StringMap< ValueTy, AllocatorTy >::find(), and I.
Decrease the number of samples for this record by S
.
Return the amout of samples actually decreased.
Definition at line 355 of file SampleProf.h.
|
inlinestatic |
Sort call targets in descending order of call frequency.
Definition at line 406 of file SampleProf.h.
References Targets.
Referenced by getSortedCallTargets(), and GetSortedValueDataFromCallTargets().