|
LLVM 24.0.0git
|
Sample-based profile writer (binary format). More...
#include "llvm/ProfileData/SampleProfWriter.h"
Public Member Functions | |
| SampleProfileWriterBinary (std::unique_ptr< raw_ostream > &OS) | |
| std::error_code | writeSample (const FunctionSamples &S) override |
| Write samples of a top-level function to a binary file. | |
| Public Member Functions inherited from llvm::sampleprof::SampleProfileWriter | |
| virtual | ~SampleProfileWriter ()=default |
| virtual std::error_code | write (const SampleProfileMap &ProfileMap) |
| Write all the sample profiles in the given map of samples. | |
| template<typename FunctionPruningStrategy = DefaultFunctionPruningStrategy> | |
| std::error_code | writeWithSizeLimit (SampleProfileMap &ProfileMap, size_t OutputSizeLimit) |
| Write sample profiles up to given size limit, using the pruning strategy to drop some functions if necessary. | |
| raw_ostream & | getOutputStream () |
| virtual void | setProfileSymbolList (ProfileSymbolList *PSL) |
| virtual void | setToCompressAllSections () |
| virtual void | setUseMD5 () |
| virtual void | setPartialProfile () |
| virtual void | setUseCtxSplitLayout () |
| virtual void | setUseMD5ProfileSymbolList () |
| virtual void | setUseMD5IndexedTables () |
| virtual void | setUseCompositeProfile (bool) |
| void | setFormatVersion (uint64_t V) |
| uint64_t | getFormatVersion () const |
Protected Member Functions | |
| virtual MapVector< FunctionId, uint32_t > & | getNameTable () |
| virtual std::error_code | writeMagicIdent (SampleProfileFormat Format) |
| virtual std::error_code | writeNameTable () |
| std::error_code | writeHeader (const SampleProfileMap &ProfileMap) override |
| Write a file header for the profile file. | |
| std::error_code | writeSummary () |
| virtual std::error_code | writeContextIdx (const SampleContext &Context) |
| std::error_code | writeNameIdx (FunctionId FName) |
| std::error_code | writeBody (const FunctionSamples &S, bool IsNested) |
| std::error_code | writeLBRProfile (const FunctionSamples &S, bool IsNested) |
| std::error_code | writeCompositeProfile (const FunctionSamples &S, bool IsNested) |
| Interfaces for composite profile writing. | |
| std::error_code | writeProfileType (ProfTypes Type, function_ref< std::error_code()> WritePayload) |
Write one Type and the size-prefixed payload emitted by WritePayload. | |
| void | addName (FunctionId FName) |
| virtual void | addContext (const SampleContext &Context) |
| void | addNames (const FunctionSamples &S) |
| std::error_code | writeCallsiteVTableProf (const CallsiteTypeMap &CallsiteTypeMap, raw_ostream &OS) |
Write CallsiteTypeMap to the output stream OS. | |
| Protected Member Functions inherited from llvm::sampleprof::SampleProfileWriter | |
| SampleProfileWriter (std::unique_ptr< raw_ostream > &OS) | |
| virtual std::error_code | writeFuncProfiles (const SampleProfileMap &ProfileMap) |
| std::error_code | writeWithSizeLimitInternal (SampleProfileMap &ProfileMap, size_t OutputSizeLimit, FunctionPruningStrategy *Strategy) |
| void | computeSummary (const SampleProfileMap &ProfileMap) |
| Compute summary for this profile. | |
Protected Attributes | |
| std::unique_ptr< raw_ostream > | PayloadSizeStream |
| Reusable stream that counts payload bytes without retaining them. | |
| bool | WritingProfileType = false |
| Whether a profile payload callback is currently being executed. | |
| MapVector< FunctionId, uint32_t > | NameTable |
| bool | WriteVTableProf = false |
| bool | WriteCompositeProf = false |
| Protected Attributes inherited from llvm::sampleprof::SampleProfileWriter | |
| size_t | LineCount |
| For writeWithSizeLimit in text mode, each newline takes 1 additional byte on Windows when actually written to the file, but not written to a memory buffer. | |
| std::unique_ptr< raw_ostream > | OutputStream |
| Output stream where to emit the profile to. | |
| std::unique_ptr< ProfileSummary > | Summary |
| Profile summary. | |
| SampleProfileFormat | Format = SPF_None |
| Profile format. | |
| uint64_t | FormatVersion = sampleprof::DefaultVersion |
| Format version to write. | |
Friends | |
| LLVM_ABI friend ErrorOr< std::unique_ptr< SampleProfileWriter > > | SampleProfileWriter::create (std::unique_ptr< raw_ostream > &OS, SampleProfileFormat Format) |
Additional Inherited Members | |
| Static Public Member Functions inherited from llvm::sampleprof::SampleProfileWriter | |
| static ErrorOr< std::unique_ptr< SampleProfileWriter > > | create (StringRef Filename, SampleProfileFormat Format) |
| Profile writer factory. | |
| static ErrorOr< std::unique_ptr< SampleProfileWriter > > | create (std::unique_ptr< raw_ostream > &OS, SampleProfileFormat Format) |
Create a new stream writer based on the value of Format. | |
Sample-based profile writer (binary format).
Definition at line 214 of file SampleProfWriter.h.
|
inline |
Definition at line 216 of file SampleProfWriter.h.
References llvm::sampleprof::SampleProfileWriter::SampleProfileWriter().
|
protectedvirtual |
Reimplemented in llvm::sampleprof::SampleProfileWriterExtBinaryBase.
Definition at line 911 of file SampleProfWriter.cpp.
References addName().
Referenced by writeHeader().
|
protected |
Definition at line 906 of file SampleProfWriter.cpp.
References getNameTable().
Referenced by addContext(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::addContext(), and addNames().
|
protected |
Definition at line 915 of file SampleProfWriter.cpp.
References addName(), addNames(), llvm::sampleprof::FunctionSamples::getBodySamples(), llvm::sampleprof::FunctionSamples::getCallsiteSamples(), llvm::sampleprof::FunctionSamples::getCallsiteTypeCounts(), llvm::sampleprof::SampleRecord::getCallTargets(), llvm::sampleprof::FunctionSamples::getFunction(), I, llvm::make_first_range(), llvm::make_second_range(), and WriteVTableProf.
Referenced by addNames(), writeHeader(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeNameTableSection().
|
inlineprotectedvirtual |
Definition at line 222 of file SampleProfWriter.h.
References NameTable.
Referenced by addName(), writeCallsiteVTableProf(), writeLBRProfile(), and writeNameIdx().
|
protected |
Definition at line 1231 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::sampleprof::FunctionSamples::getCallsiteSamples(), llvm::sampleprof::FunctionSamples::getCallsiteTypeCounts(), llvm::sampleprof::FunctionSamples::getContext(), llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::success, writeBody(), writeCallsiteVTableProf(), WriteCompositeProf, writeCompositeProfile(), writeContextIdx(), writeLBRProfile(), and WriteVTableProf.
Referenced by writeBody(), writeSample(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeSample().
|
protected |
Write CallsiteTypeMap to the output stream OS.
Definition at line 1072 of file SampleProfWriter.cpp.
References assert(), llvm::encodeULEB128(), getNameTable(), llvm::sampleprof::serializeTypeMap(), llvm::success, and WriteVTableProf.
Referenced by writeBody().
|
protected |
Interfaces for composite profile writing.
Definition at line 1215 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), hasNonEmptyLBRProfile(), llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::sampleprof::ProfTypeLBR, llvm::success, writeLBRProfile(), and writeProfileType().
Referenced by writeBody().
|
protectedvirtual |
Reimplemented in llvm::sampleprof::SampleProfileWriterExtBinaryBase.
Definition at line 892 of file SampleProfWriter.cpp.
References assert(), and writeNameIdx().
Referenced by writeBody().
|
overrideprotectedvirtual |
Write a file header for the profile file.
Implements llvm::sampleprof::SampleProfileWriter.
Definition at line 976 of file SampleProfWriter.cpp.
References addContext(), addNames(), llvm::sampleprof::SampleProfileWriter::computeSummary(), llvm::sampleprof::SampleProfileWriter::Format, I, NameTable, llvm::success, writeMagicIdent(), writeNameTable(), and writeSummary().
|
protected |
Definition at line 1106 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::sampleprof::FunctionSamples::getBodySamples(), llvm::sampleprof::FunctionSamples::getHeadSamples(), getNameTable(), llvm::sampleprof::FunctionSamples::getTotalSamples(), I, llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::sampleprof::SampleRecord::serialize(), llvm::SortedVectorMap< KeyT, ValueT, N, KeyCompare >::size(), llvm::success, and WriteCompositeProf.
Referenced by writeBody(), and writeCompositeProfile().
|
protectedvirtual |
Definition at line 967 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::sampleprof::SampleProfileWriter::Format, llvm::sampleprof::SampleProfileWriter::FormatVersion, llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::sampleprof::SPMagic(), and llvm::success.
Referenced by writeHeader().
|
protected |
Definition at line 897 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), getNameTable(), llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::success, and llvm::truncated_name_table.
Referenced by writeContextIdx(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeContextIdx(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeCSNameTableSection().
|
protectedvirtual |
Reimplemented in llvm::sampleprof::SampleProfileWriterExtBinaryBase.
Definition at line 954 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), NameTable, llvm::sampleprof::SampleProfileWriter::OutputStream, stabilizeTable(), and llvm::success.
Referenced by writeHeader(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeNameTable().
|
protected |
Write one Type and the size-prefixed payload emitted by WritePayload.
The callback is invoked once to count its bytes and again to emit them, so both calls must produce identical output without external side effects.
Definition at line 1168 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::malformed, llvm::sampleprof::SampleProfileWriter::OutputStream, PayloadSizeStream, llvm::success, llvm::raw_ostream::tell(), llvm::too_large, and WritingProfileType.
Referenced by writeCompositeProfile().
|
overridevirtual |
Write samples of a top-level function to a binary file.
Implements llvm::sampleprof::SampleProfileWriter.
Reimplemented in llvm::sampleprof::SampleProfileWriterExtBinaryBase.
Definition at line 1268 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::sampleprof::FunctionSamples::getHeadSamples(), llvm::sampleprof::SampleProfileWriter::OutputStream, and writeBody().
|
protected |
Definition at line 1088 of file SampleProfWriter.cpp.
References llvm::encodeULEB128(), llvm::sampleprof::SampleProfileWriter::OutputStream, llvm::ArrayRef< T >::size(), llvm::success, and llvm::sampleprof::SampleProfileWriter::Summary.
Referenced by writeHeader(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeOneSection().
|
friend |
|
protected |
Definition at line 247 of file SampleProfWriter.h.
Referenced by getNameTable(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::write(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeEytzingerFuncOffsetTable(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeEytzingerNameTableSection(), writeHeader(), writeNameTable(), llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeNameTable(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeNameTableSection().
|
protected |
Reusable stream that counts payload bytes without retaining them.
Definition at line 243 of file SampleProfWriter.h.
Referenced by writeProfileType().
|
protected |
Definition at line 259 of file SampleProfWriter.h.
Referenced by llvm::sampleprof::SampleProfileWriterExtBinaryBase::setUseCompositeProfile(), writeBody(), writeLBRProfile(), and llvm::sampleprof::SampleProfileWriterExtBinaryBase::writeSample().
|
protected |
Definition at line 258 of file SampleProfWriter.h.
Referenced by addNames(), llvm::sampleprof::SampleProfileWriterExtBinary::SampleProfileWriterExtBinary(), writeBody(), and writeCallsiteVTableProf().
|
protected |
Whether a profile payload callback is currently being executed.
Definition at line 245 of file SampleProfWriter.h.
Referenced by writeProfileType().