LLVM 20.0.0git
|
Representation of a single sample record. More...
#include "llvm/ProfileData/SampleProf.h"
Classes | |
struct | CallTargetComparator |
Public Types | |
using | CallTarget = std::pair< FunctionId, uint64_t > |
using | SortedCallTargetSet = std::set< CallTarget, CallTargetComparator > |
using | CallTargetMap = std::unordered_map< FunctionId, 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 (FunctionId F, uint64_t S, uint64_t Weight=1) |
Add called function F with samples S . | |
uint64_t | removeCalledTarget (FunctionId 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<FunctionId, uint64_t> |
Definition at line 327 of file SampleProf.h.
using llvm::sampleprof::SampleRecord::CallTargetMap = std::unordered_map<FunctionId, uint64_t> |
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 merge().
|
inlinestatic |
Prorate call targets by a distribution factor.
Definition at line 416 of file SampleProf.h.
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.
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::mergeSampleProfErrors(), and llvm::Other.
|
inline |
Definition at line 435 of file SampleProf.h.
References llvm::Other.
|
inline |
Definition at line 431 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<<().
|
inline |
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.
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 407 of file SampleProf.h.
Referenced by getSortedCallTargets(), and GetSortedValueDataFromCallTargets().