LLVM: llvm::sampleprof::SampleProfileReaderBinary Class Reference (original) (raw)
#include "[llvm/ProfileData/SampleProfReader.h](SampleProfReader%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| SampleProfileReaderBinary (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
| std::error_code | readHeader () override |
| Read and validate the file header. | |
| std::error_code | readImpl () override |
| Read sample profiles from the associated file. | |
| std::vector< FunctionId > * | getNameTable () override |
| It includes all the names that have samples either in outline instance or inline instance. | |
| Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
| SampleProfileReader (std::unique_ptr< MemoryBuffer > B, LLVMContext &C, SampleProfileFormat Format=SPF_None) | |
| virtual | ~SampleProfileReader ()=default |
| void | setDiscriminatorMaskedBitFrom (FSDiscriminatorPass P) |
| Set the bits for FS discriminators. | |
| uint32_t | getDiscriminatorMask () const |
| Get the bitmask the discriminators: For FS profiles, return the bit mask for this pass. | |
| std::error_code | read () |
| The interface to read sample profiles from the associated file. | |
| std::error_code | read (const DenseSet< StringRef > &FuncsToUse) |
| Read sample profiles for the given functions. | |
| LLVM_ABI void | dumpFunctionProfile (const FunctionSamples &FS, raw_ostream &OS=dbgs()) |
| Print the profile for FunctionSamples on stream OS. | |
| virtual bool | collectFuncsFromModule () |
| Collect functions with definitions in Module M. | |
| LLVM_ABI void | dump (raw_ostream &OS=dbgs()) |
| Print all the profiles on stream OS. | |
| LLVM_ABI void | dumpJson (raw_ostream &OS=dbgs()) |
| Print all the profiles on stream OS in the JSON format. | |
| FunctionSamples * | getSamplesFor (const Function &F) |
| Return the samples collected for function F. | |
| FunctionSamples * | getSamplesFor (StringRef Fname) |
| Return the samples collected for function F. | |
| SampleProfileMap & | getProfiles () |
| Return all the profiles. | |
| void | reportError (int64_t LineNumber, const Twine &Msg) const |
| Report a parse error message. | |
| ProfileSummary & | getSummary () const |
| Return the profile summary. | |
| MemoryBuffer * | getBuffer () const |
| SampleProfileFormat | getFormat () const |
| Return the profile format. | |
| bool | profileIsProbeBased () const |
| Whether input profile is based on pseudo probes. | |
| bool | profileIsCS () const |
| Whether input profile is fully context-sensitive. | |
| bool | profileIsPreInlined () const |
| Whether input profile contains ShouldBeInlined contexts. | |
| bool | profileIsFS () const |
| Whether input profile is flow-sensitive. | |
| virtual std::unique_ptr< ProfileSymbolList > | getProfileSymbolList () |
| virtual bool | dumpSectionInfo (raw_ostream &OS=dbgs()) |
| bool | useMD5 () const |
| Return whether names in the profile are all MD5 numbers. | |
| virtual void | setProfileUseMD5 () |
| Force the profile to use MD5 in Sample contexts, even if function names are present. | |
| void | setSkipFlatProf (bool Skip) |
| Don't read profile without context if the flag is set. | |
| virtual bool | hasUniqSuffix () |
| Return whether any name in the profile contains ".__uniq." suffix. | |
| SampleProfileReaderItaniumRemapper * | getRemapper () |
| void | setModule (const Module *Mod) |
| void | setFuncNameToProfNameMap (const HashKeyMap< std::unordered_map, FunctionId, FunctionId > &FPMap) |
| Protected Member Functions | |
|---|---|
| template<typename T> | |
| ErrorOr< T > | readNumber () |
| Read a numeric value of type T from the profile. | |
| template<typename T> | |
| ErrorOr< T > | readUnencodedNumber () |
| Read a numeric value of type T from the profile. | |
| ErrorOr< StringRef > | readString () |
| Read a string from the profile. | |
| template<typename T> | |
| ErrorOr< size_t > | readStringIndex (T &Table) |
| Read the string index and check whether it overflows the table. | |
| std::error_code | readFuncProfile (const uint8_t *Start) |
| Read the next function profile instance. | |
| std::error_code | readFuncProfile (const uint8_t *Start, SampleProfileMap &Profiles) |
| std::error_code | readProfile (FunctionSamples &FProfile) |
| Read the contents of the given profile instance. | |
| std::error_code | readMagicIdent () |
| Read the contents of Magic number and Version number. | |
| std::error_code | readSummary () |
| Read profile summary. | |
| std::error_code | readNameTable () |
| Read the whole name table. | |
| ErrorOr< FunctionId > | readStringFromTable (size_t *RetIdx=nullptr) |
| Read a string indirectly via the name table. Optionally return the index. | |
| ErrorOr< SampleContextFrames > | readContextFromTable (size_t *RetIdx=nullptr) |
| Read a context indirectly via the CSNameTable. | |
| ErrorOr< std::pair< SampleContext, uint64_t > > | readSampleContextFromTable () |
| Read a context indirectly via the CSNameTable if the profile has context, otherwise same as readStringFromTable, also return its hash value. | |
| std::error_code | readCallsiteVTableProf (FunctionSamples &FProfile) |
| Read all virtual functions' vtable access counts for FProfile. | |
| std::error_code | readVTableTypeCountMap (TypeCountMap &M) |
| Read bytes from the input buffer pointed by Data and decode them into M. | |
| Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
| LLVM_ABI void | computeSummary () |
| Compute summary for this profile. | |
| virtual std::error_code | read (const DenseSet< StringRef > &FuncsToUse, SampleProfileMap &Profiles) |
| Read sample profiles for the given functions and write them to the given profile map. |
| Protected Attributes | |
|---|---|
| const uint8_t * | Data = nullptr |
| Points to the current location in the buffer. | |
| const uint8_t * | End = nullptr |
| Points to the end of the buffer. | |
| std::vector< FunctionId > | NameTable |
| Function name table. | |
| std::vector< SampleContextFrameVector > | CSNameTable |
| CSNameTable is used to save full context vectors. | |
| std::vector< uint64_t > | MD5SampleContextTable |
| Table to cache MD5 values of sample contexts corresponding to readSampleContextFromTable(), used to index into Profiles or FuncOffsetTable. | |
| const uint64_t * | MD5SampleContextStart = nullptr |
| The starting address of the table of MD5 values of sample contexts. | |
| Protected Attributes inherited from llvm::sampleprof::SampleProfileReader | |
| SampleProfileMap | Profiles |
| Map every function to its associated profile. | |
| LLVMContext & | Ctx |
| LLVM context used to emit diagnostics. | |
| std::unique_ptr< MemoryBuffer > | Buffer |
| Memory buffer holding the profile file. | |
| std::unique_ptr< ProfileSummary > | Summary |
| Profile summary information. | |
| std::unique_ptr< SampleProfileReaderItaniumRemapper > | Remapper |
| const HashKeyMap< std::unordered_map, FunctionId, FunctionId > * | FuncNameToProfNameMap = nullptr |
| std::unordered_map< uint64_t, std::pair< const uint8_t *, const uint8_t * > > | FuncMetadataIndex |
| std::pair< const uint8_t *, const uint8_t * > | ProfileSecRange |
| bool | ProfileHasAttribute = false |
| Whether the profile has attribute metadata. | |
| bool | ProfileIsProbeBased = false |
| Whether samples are collected based on pseudo probes. | |
| bool | ProfileIsCS = false |
| Whether function profiles are context-sensitive flat profiles. | |
| bool | ProfileIsPreInlined = false |
| Whether function profile contains ShouldBeInlined contexts. | |
| uint32_t | CSProfileCount = 0 |
| Number of context-sensitive profiles. | |
| bool | ProfileIsFS = false |
| Whether the function profiles use FS discriminators. | |
| bool | ReadVTableProf = false |
| If true, the profile has vtable profiles and reader should decode them to parse profiles correctly. | |
| SampleProfileFormat | Format = SPF_None |
| The format of sample. | |
| const Module * | M = nullptr |
| The current module being compiled if SampleProfileReader is used by compiler. | |
| uint32_t | MaskedBitFrom = 31 |
| Zero out the discriminator bits higher than bit MaskedBitFrom (0 based). | |
| bool | ProfileIsMD5 = false |
| Whether the profile uses MD5 for Sample Contexts and function names. | |
| bool | SkipFlatProf = false |
| If SkipFlatProf is true, skip functions marked with !Flat in text mode or sections with SecFlagFlat flag in ExtBinary mode. |
| Additional Inherited Members | |
|---|---|
| Static Public Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
| static LLVM_ABI ErrorOr< std::unique_ptr< SampleProfileReader > > | create (StringRef Filename, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
| Create a sample profile reader appropriate to the file format. | |
| static LLVM_ABI ErrorOr< std::unique_ptr< SampleProfileReader > > | create (std::unique_ptr< MemoryBuffer > &B, LLVMContext &C, vfs::FileSystem &FS, FSDiscriminatorPass P=FSDiscriminatorPass::Base, StringRef RemapFilename="") |
| Create a sample profile reader from the supplied memory buffer. | |
| Static Protected Member Functions inherited from llvm::sampleprof::SampleProfileReader | |
| static std::unique_ptr< ProfileSummary > | takeSummary (SampleProfileReader &Reader) |
| Take ownership of the summary of this reader. |
Definition at line 639 of file SampleProfReader.h.
◆ getNameTable()
| std::vector< FunctionId > * llvm::sampleprof::SampleProfileReaderBinary::getNameTable ( ) | inlineoverridevirtual |
|---|
◆ readCallsiteVTableProf()
| std::error_code SampleProfileReaderBinary::readCallsiteVTableProf ( FunctionSamples & FProfile) | protected |
|---|
◆ readContextFromTable()
◆ readFuncProfile() [1/2]
| std::error_code SampleProfileReaderBinary::readFuncProfile ( const uint8_t * Start) | protected |
|---|
◆ readFuncProfile() [2/2]
◆ readHeader()
| std::error_code SampleProfileReaderBinary::readHeader ( ) | overridevirtual |
|---|
◆ readImpl()
| std::error_code SampleProfileReaderBinary::readImpl ( ) | overridevirtual |
|---|
◆ readMagicIdent()
| std::error_code SampleProfileReaderBinary::readMagicIdent ( ) | protected |
|---|
◆ readNameTable()
| std::error_code SampleProfileReaderBinary::readNameTable ( ) | protected |
|---|
Read the whole name table.
Definition at line 1233 of file SampleProfReader.cpp.
References llvm::sampleprof::FunctionId::getHashCode(), I, MD5SampleContextStart, MD5SampleContextTable, NameTable, llvm::sampleprof::SampleProfileReader::ProfileIsCS, readNumber(), readString(), Size, llvm::success, and llvm::sampleprof::SampleProfileReader::useMD5().
Referenced by readHeader(), and llvm::sampleprof::SampleProfileReaderExtBinaryBase::readNameTableSec().
◆ readNumber()
template<typename T>
| ErrorOr< T > SampleProfileReaderBinary::readNumber ( ) | protected |
|---|
Read a numeric value of type T from the profile.
If an error occurs during decoding, a diagnostic message is emitted and EC is set.
Returns
the read value.
Definition at line 547 of file SampleProfReader.cpp.
References Data, llvm::decodeULEB128(), End, llvm::malformed, llvm::sampleprof::SampleProfileReader::reportError(), T, and llvm::truncated.
Referenced by readCallsiteVTableProf(), readContextFromTable(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readCSNameTableSec(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncOffsetTable(), readFuncProfile(), readMagicIdent(), readNameTable(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readNameTableSec(), readProfile(), readStringIndex(), readSummary(), and readVTableTypeCountMap().
◆ readProfile()
| std::error_code SampleProfileReaderBinary::readProfile ( FunctionSamples & FProfile) | protected |
|---|
Read the contents of the given profile instance.
Definition at line 713 of file SampleProfReader.cpp.
References llvm::sampleprof::FunctionSamples::addBodySamples(), llvm::sampleprof::FunctionSamples::addCalledTargetSamples(), llvm::sampleprof::FunctionSamples::addTotalSamples(), llvm::sampleprof::FunctionSamples::functionSamplesAt(), llvm::sampleprof::SampleProfileReader::getDiscriminatorMask(), I, llvm::illegal_line_offset, isOffsetLegal(), readCallsiteVTableProf(), readNumber(), readProfile(), readStringFromTable(), llvm::sampleprof::SampleProfileReader::ReadVTableProf, llvm::sampleprof::FunctionSamples::setFunction(), and llvm::success.
Referenced by readFuncProfile(), and readProfile().
◆ readSampleContextFromTable()
Read a context indirectly via the CSNameTable if the profile has context, otherwise same as readStringFromTable, also return its hash value.
Definition at line 623 of file SampleProfReader.cpp.
References assert(), MD5SampleContextStart, MD5SampleContextTable, llvm::sampleprof::SampleProfileReader::ProfileIsCS, llvm::support::endian::read64le(), readContextFromTable(), readStringFromTable(), and llvm::support::endian::write64le().
Referenced by llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncOffsetTable(), and readFuncProfile().
◆ readString()
◆ readStringFromTable()
| ErrorOr< FunctionId > SampleProfileReaderBinary::readStringFromTable ( size_t * RetIdx = nullptr) | protected |
|---|
◆ readStringIndex()
template<typename T>
| ErrorOr< size_t > SampleProfileReaderBinary::readStringIndex ( T & Table) | inlineprotected |
|---|
◆ readSummary()
| std::error_code SampleProfileReaderBinary::readSummary ( ) | protected |
|---|
◆ readUnencodedNumber()
template<typename T>
| ErrorOr< T > SampleProfileReaderBinary::readUnencodedNumber ( ) | protected |
|---|
◆ readVTableTypeCountMap()
| std::error_code SampleProfileReaderBinary::readVTableTypeCountMap ( TypeCountMap & M) | protected |
|---|
◆ CSNameTable
◆ Data
| const uint8_t* llvm::sampleprof::SampleProfileReaderBinary::Data = nullptr | protected |
|---|
Points to the current location in the buffer.
Definition at line 718 of file SampleProfReader.h.
Referenced by llvm::sampleprof::SampleProfileReaderExtBinary::hasFormat(), llvm::sampleprof::SampleProfileReaderRawBinary::hasFormat(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), readFuncProfile(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncProfiles(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncProfiles(), readHeader(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readHeader(), readImpl(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readImpl(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readNameTableSec(), readNumber(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readOneSection(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readProfileSymbolList(), readString(), and readUnencodedNumber().
◆ End
| const uint8_t* llvm::sampleprof::SampleProfileReaderBinary::End = nullptr | protected |
|---|
Points to the end of the buffer.
Definition at line 721 of file SampleProfReader.h.
Referenced by llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncMetadata(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readFuncProfiles(), readHeader(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readHeader(), readImpl(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readImpl(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readNameTableSec(), readNumber(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readOneSection(), llvm::sampleprof::SampleProfileReaderExtBinaryBase::readProfileSymbolList(), readString(), and readUnencodedNumber().
◆ MD5SampleContextStart
| const uint64_t* llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextStart = nullptr | protected |
|---|
◆ MD5SampleContextTable
| std::vector<uint64_t> llvm::sampleprof::SampleProfileReaderBinary::MD5SampleContextTable | protected |
|---|
◆ NameTable
| std::vector<FunctionId> llvm::sampleprof::SampleProfileReaderBinary::NameTable | protected |
|---|
The documentation for this class was generated from the following files:
- include/llvm/ProfileData/SampleProfReader.h
- lib/ProfileData/SampleProfReader.cpp