LLVM
15.0.0git
|
Serialize the remarks to LLVM bitstream. More...
#include "llvm/Remarks/BitstreamRemarkSerializer.h"
Public Attributes | |
SmallVector< char, 1024 > | Encoded |
Buffer used for encoding the bitstream before writing it to the final stream. More... | |
SmallVector< uint64_t, 64 > | R |
Buffer used to construct records and pass to the bitstream writer. More... | |
BitstreamWriter | Bitstream |
The Bitstream writer. More... | |
BitstreamRemarkContainerType | ContainerType |
The type of the container we are serializing. More... | |
uint64_t | RecordMetaContainerInfoAbbrevID = 0 |
Abbrev IDs initialized in the block info block. More... | |
uint64_t | RecordMetaRemarkVersionAbbrevID = 0 |
uint64_t | RecordMetaStrTabAbbrevID = 0 |
uint64_t | RecordMetaExternalFileAbbrevID = 0 |
uint64_t | RecordRemarkHeaderAbbrevID = 0 |
uint64_t | RecordRemarkDebugLocAbbrevID = 0 |
uint64_t | RecordRemarkHotnessAbbrevID = 0 |
uint64_t | RecordRemarkArgWithDebugLocAbbrevID = 0 |
uint64_t | RecordRemarkArgWithoutDebugLocAbbrevID = 0 |
Serialize the remarks to LLVM bitstream.
This class provides ways to emit remarks in the LLVM bitstream format and its associated metadata.
The separate model: Separate meta: | Container info | String table | External file
Separate remarks: | Container info | Remark version | Remark0 | Remark1 | Remark2 | ...
Definition at line 50 of file BitstreamRemarkSerializer.h.
BitstreamRemarkSerializerHelper::BitstreamRemarkSerializerHelper | ( | BitstreamRemarkContainerType | ContainerType | ) |
Definition at line 20 of file BitstreamRemarkSerializer.cpp.
References llvm::remarks::Bitstream.
|
delete |
|
delete |
void BitstreamRemarkSerializerHelper::emitMetaBlock | ( | uint64_t | ContainerVersion, |
Optional< uint64_t > | RemarkVersion, | ||
Optional< const StringTable * > | StrTab = None , |
||
Optional< StringRef > | Filename = None |
||
) |
Emit the metadata for the remarks.
Definition at line 233 of file BitstreamRemarkSerializer.cpp.
References assert(), Bitstream, llvm::SmallVectorImpl< T >::clear(), ContainerType, emitMetaExternalFile(), emitMetaRemarkVersion(), emitMetaStrTab(), llvm::BitstreamWriter::EmitRecordWithAbbrev(), llvm::BitstreamWriter::EnterSubblock(), llvm::BitstreamWriter::ExitBlock(), llvm::remarks::META_BLOCK_ID, llvm::None, R, llvm::remarks::RECORD_META_CONTAINER_INFO, RecordMetaContainerInfoAbbrevID, llvm::remarks::SeparateRemarksFile, llvm::remarks::SeparateRemarksMeta, and llvm::remarks::Standalone.
Referenced by llvm::remarks::BitstreamMetaSerializer::emit().
void BitstreamRemarkSerializerHelper::emitMetaExternalFile | ( | StringRef | Filename | ) |
Definition at line 117 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::SmallVectorImpl< T >::clear(), llvm::BitstreamWriter::EmitRecordWithBlob(), R, llvm::remarks::RECORD_META_EXTERNAL_FILE, and RecordMetaExternalFileAbbrevID.
Referenced by emitMetaBlock().
void BitstreamRemarkSerializerHelper::emitMetaRemarkVersion | ( | uint64_t | RemarkVersion | ) |
Definition at line 74 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::SmallVectorImpl< T >::clear(), llvm::BitstreamWriter::EmitRecordWithAbbrev(), R, llvm::remarks::RECORD_META_REMARK_VERSION, and RecordMetaRemarkVersionAbbrevID.
Referenced by emitMetaBlock().
void BitstreamRemarkSerializerHelper::emitMetaStrTab | ( | const StringTable & | StrTab | ) |
Definition at line 93 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::SmallVectorImpl< T >::clear(), llvm::BitstreamWriter::EmitRecordWithBlob(), R, llvm::remarks::RECORD_META_STRTAB, RecordMetaStrTabAbbrevID, llvm::remarks::StringTable::serialize(), and llvm::raw_string_ostream::str().
Referenced by emitMetaBlock().
void BitstreamRemarkSerializerHelper::emitRemarkBlock | ( | const Remark & | Remark, |
StringTable & | StrTab | ||
) |
Emit a remark block. The string table is required.
Definition at line 268 of file BitstreamRemarkSerializer.cpp.
References llvm::remarks::StringTable::add(), Arg, llvm::remarks::Remark::Args, Bitstream, llvm::SmallVectorImpl< T >::clear(), llvm::BitstreamWriter::EmitRecordWithAbbrev(), llvm::BitstreamWriter::EnterSubblock(), llvm::BitstreamWriter::ExitBlock(), llvm::remarks::Remark::FunctionName, llvm::remarks::Remark::Hotness, llvm::remarks::Remark::Loc, llvm::None, llvm::remarks::Remark::PassName, R, llvm::remarks::RECORD_REMARK_ARG_WITH_DEBUGLOC, llvm::remarks::RECORD_REMARK_ARG_WITHOUT_DEBUGLOC, llvm::remarks::RECORD_REMARK_DEBUG_LOC, llvm::remarks::RECORD_REMARK_HEADER, llvm::remarks::RECORD_REMARK_HOTNESS, RecordRemarkArgWithDebugLocAbbrevID, RecordRemarkArgWithoutDebugLocAbbrevID, RecordRemarkDebugLocAbbrevID, RecordRemarkHeaderAbbrevID, RecordRemarkHotnessAbbrevID, llvm::remarks::REMARK_BLOCK_ID, llvm::remarks::Remark::RemarkName, and llvm::remarks::Remark::RemarkType.
Referenced by llvm::remarks::BitstreamRemarkSerializer::emit().
void BitstreamRemarkSerializerHelper::flushToStream | ( | raw_ostream & | OS | ) |
Finalize the writing to OS
.
Definition at line 318 of file BitstreamRemarkSerializer.cpp.
References llvm::SmallVectorImpl< T >::clear(), Encoded, and llvm::raw_ostream::write().
Referenced by llvm::remarks::BitstreamRemarkSerializer::emit(), and llvm::remarks::BitstreamMetaSerializer::emit().
StringRef BitstreamRemarkSerializerHelper::getBuffer | ( | ) |
Finalize the writing to a buffer.
The contents of the buffer remain valid for the lifetime of the object. Any call to any other function in this class will invalidate the buffer.
Definition at line 323 of file BitstreamRemarkSerializer.cpp.
References Encoded.
|
delete |
|
delete |
void BitstreamRemarkSerializerHelper::setupBlockInfo | ( | ) |
Set up the necessary block info entries according to the container type.
Definition at line 196 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::remarks::ContainerMagic(), ContainerType, llvm::BitstreamWriter::Emit(), llvm::BitstreamWriter::EnterBlockInfoBlock(), llvm::BitstreamWriter::ExitBlock(), llvm::remarks::SeparateRemarksFile, llvm::remarks::SeparateRemarksMeta, setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), setupRemarkBlockInfo(), and llvm::remarks::Standalone.
Referenced by llvm::remarks::BitstreamMetaSerializer::emit().
void BitstreamRemarkSerializerHelper::setupMetaBlockInfo | ( | ) |
Set up the block info for the metadata block.
Definition at line 47 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitstreamWriter::EmitBlockInfoAbbrev(), llvm::BitCodeAbbrevOp::Fixed, initBlock(), llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaBlockName, llvm::remarks::MetaContainerInfoName, R, llvm::remarks::RECORD_META_CONTAINER_INFO, RecordMetaContainerInfoAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaExternalFile | ( | ) |
The external file in the metadata block.
Definition at line 107 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Blob, llvm::BitstreamWriter::EmitBlockInfoAbbrev(), llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaExternalFileName, R, llvm::remarks::RECORD_META_EXTERNAL_FILE, RecordMetaExternalFileAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaRemarkVersion | ( | ) |
The remark version in the metadata block.
Definition at line 63 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitstreamWriter::EmitBlockInfoAbbrev(), llvm::BitCodeAbbrevOp::Fixed, llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaRemarkVersionName, R, llvm::remarks::RECORD_META_REMARK_VERSION, RecordMetaRemarkVersionAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaStrTab | ( | ) |
The strtab in the metadata block.
Definition at line 83 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Blob, llvm::BitstreamWriter::EmitBlockInfoAbbrev(), llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaStrTabName, R, llvm::remarks::RECORD_META_STRTAB, RecordMetaStrTabAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupRemarkBlockInfo | ( | ) |
The block info for the remarks block.
Definition at line 124 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitstreamWriter::EmitBlockInfoAbbrev(), llvm::BitCodeAbbrevOp::Fixed, initBlock(), R, llvm::remarks::RECORD_REMARK_ARG_WITH_DEBUGLOC, llvm::remarks::RECORD_REMARK_ARG_WITHOUT_DEBUGLOC, llvm::remarks::RECORD_REMARK_DEBUG_LOC, llvm::remarks::RECORD_REMARK_HEADER, llvm::remarks::RECORD_REMARK_HOTNESS, RecordRemarkArgWithDebugLocAbbrevID, RecordRemarkArgWithoutDebugLocAbbrevID, RecordRemarkDebugLocAbbrevID, RecordRemarkHeaderAbbrevID, RecordRemarkHotnessAbbrevID, llvm::remarks::REMARK_BLOCK_ID, llvm::remarks::RemarkArgWithDebugLocName, llvm::remarks::RemarkArgWithoutDebugLocName, llvm::remarks::RemarkBlockName, llvm::remarks::RemarkDebugLocName, llvm::remarks::RemarkHeaderName, llvm::remarks::RemarkHotnessName, setRecordName(), and llvm::BitCodeAbbrevOp::VBR.
Referenced by setupBlockInfo().
BitstreamWriter llvm::remarks::BitstreamRemarkSerializerHelper::Bitstream |
The Bitstream writer.
Definition at line 57 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaBlock(), emitMetaExternalFile(), emitMetaRemarkVersion(), emitMetaStrTab(), emitRemarkBlock(), setupBlockInfo(), setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), and setupRemarkBlockInfo().
BitstreamRemarkContainerType llvm::remarks::BitstreamRemarkSerializerHelper::ContainerType |
The type of the container we are serializing.
Definition at line 59 of file BitstreamRemarkSerializer.h.
Referenced by llvm::remarks::BitstreamRemarkSerializer::emit(), emitMetaBlock(), llvm::remarks::BitstreamRemarkSerializer::metaSerializer(), and setupBlockInfo().
SmallVector<char, 1024> llvm::remarks::BitstreamRemarkSerializerHelper::Encoded |
Buffer used for encoding the bitstream before writing it to the final stream.
Definition at line 53 of file BitstreamRemarkSerializer.h.
Referenced by flushToStream(), and getBuffer().
SmallVector<uint64_t, 64> llvm::remarks::BitstreamRemarkSerializerHelper::R |
Buffer used to construct records and pass to the bitstream writer.
Definition at line 55 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaBlock(), emitMetaExternalFile(), emitMetaRemarkVersion(), emitMetaStrTab(), emitRemarkBlock(), setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaContainerInfoAbbrevID = 0 |
Abbrev IDs initialized in the block info block.
Note: depending on the container type, some IDs might be uninitialized. Warning: When adding more abbrev IDs, make sure to update the BlockCodeSize (in the call to EnterSubblock).
Definition at line 65 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaBlock(), and setupMetaBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaExternalFileAbbrevID = 0 |
Definition at line 68 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaExternalFile(), and setupMetaExternalFile().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaRemarkVersionAbbrevID = 0 |
Definition at line 66 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaRemarkVersion(), and setupMetaRemarkVersion().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaStrTabAbbrevID = 0 |
Definition at line 67 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaStrTab(), and setupMetaStrTab().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkArgWithDebugLocAbbrevID = 0 |
Definition at line 72 of file BitstreamRemarkSerializer.h.
Referenced by emitRemarkBlock(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkArgWithoutDebugLocAbbrevID = 0 |
Definition at line 73 of file BitstreamRemarkSerializer.h.
Referenced by emitRemarkBlock(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkDebugLocAbbrevID = 0 |
Definition at line 70 of file BitstreamRemarkSerializer.h.
Referenced by emitRemarkBlock(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkHeaderAbbrevID = 0 |
Definition at line 69 of file BitstreamRemarkSerializer.h.
Referenced by emitRemarkBlock(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkHotnessAbbrevID = 0 |
Definition at line 71 of file BitstreamRemarkSerializer.h.
Referenced by emitRemarkBlock(), and setupRemarkBlockInfo().