LLVM 20.0.0git
|
MappedBlockStream represents data stored in an MSF file into chunks of a particular size (called the Block Size), and whose chunks may not be necessarily contiguous. More...
#include "llvm/DebugInfo/MSF/MappedBlockStream.h"
Public Member Functions | |
llvm::endianness | getEndian () const override |
Error | readBytes (uint64_t Offset, uint64_t Size, ArrayRef< uint8_t > &Buffer) override |
Given an offset into the stream and a number of bytes, attempt to read the bytes and set the output ArrayRef to point to data owned by the stream. | |
Error | readLongestContiguousChunk (uint64_t Offset, ArrayRef< uint8_t > &Buffer) override |
Given an offset into the stream, read as much as possible without copying any data. | |
uint64_t | getLength () override |
Return the number of bytes of data in this stream. | |
BumpPtrAllocator & | getAllocator () |
void | invalidateCache () |
uint32_t | getBlockSize () const |
uint32_t | getNumBlocks () const |
uint32_t | getStreamLength () const |
Public Member Functions inherited from llvm::BinaryStream | |
virtual | ~BinaryStream ()=default |
virtual llvm::endianness | getEndian () const =0 |
virtual Error | readBytes (uint64_t Offset, uint64_t Size, ArrayRef< uint8_t > &Buffer)=0 |
Given an offset into the stream and a number of bytes, attempt to read the bytes and set the output ArrayRef to point to data owned by the stream. | |
virtual Error | readLongestContiguousChunk (uint64_t Offset, ArrayRef< uint8_t > &Buffer)=0 |
Given an offset into the stream, read as much as possible without copying any data. | |
virtual uint64_t | getLength ()=0 |
Return the number of bytes of data in this stream. | |
virtual BinaryStreamFlags | getFlags () const |
Return the properties of this stream. | |
Static Public Member Functions | |
static std::unique_ptr< MappedBlockStream > | createStream (uint32_t BlockSize, const MSFStreamLayout &Layout, BinaryStreamRef MsfData, BumpPtrAllocator &Allocator) |
static std::unique_ptr< MappedBlockStream > | createIndexedStream (const MSFLayout &Layout, BinaryStreamRef MsfData, uint32_t StreamIndex, BumpPtrAllocator &Allocator) |
static std::unique_ptr< MappedBlockStream > | createFpmStream (const MSFLayout &Layout, BinaryStreamRef MsfData, BumpPtrAllocator &Allocator) |
static std::unique_ptr< MappedBlockStream > | createDirectoryStream (const MSFLayout &Layout, BinaryStreamRef MsfData, BumpPtrAllocator &Allocator) |
Protected Member Functions | |
MappedBlockStream (uint32_t BlockSize, const MSFStreamLayout &StreamLayout, BinaryStreamRef MsfData, BumpPtrAllocator &Allocator) | |
Protected Member Functions inherited from llvm::BinaryStream | |
Error | checkOffsetForRead (uint64_t Offset, uint64_t DataSize) |
Friends | |
class | WritableMappedBlockStream |
MappedBlockStream represents data stored in an MSF file into chunks of a particular size (called the Block Size), and whose chunks may not be necessarily contiguous.
The arrangement of these chunks MSF the file is described by some other metadata contained within the MSF file. In the case of a standard MSF Stream, the layout of the stream's blocks is described by the MSF "directory", but in the case of the directory itself, the layout is described by an array at a fixed location within the MSF. MappedBlockStream provides methods for reading from and writing to one of these streams transparently, as if it were a contiguous sequence of bytes.
Definition at line 37 of file MappedBlockStream.h.
|
protected |
Definition at line 43 of file MappedBlockStream.cpp.
References Allocator.
|
static |
Definition at line 69 of file MappedBlockStream.cpp.
References Allocator, llvm::msf::MSFStreamLayout::Blocks, llvm::msf::SuperBlock::BlockSize, createStream(), llvm::msf::MSFLayout::DirectoryBlocks, llvm::msf::MSFStreamLayout::Length, llvm::msf::SuperBlock::NumDirectoryBytes, and llvm::msf::MSFLayout::SB.
Referenced by llvm::pdb::PDBFile::parseStreamData().
|
static |
Definition at line 79 of file MappedBlockStream.cpp.
References Allocator, llvm::msf::SuperBlock::BlockSize, createStream(), llvm::msf::getFpmStreamLayout(), and llvm::msf::MSFLayout::SB.
Referenced by llvm::pdb::PDBFile::parseFileHeaders().
|
static |
Definition at line 57 of file MappedBlockStream.cpp.
References Allocator, assert(), llvm::msf::MSFStreamLayout::Blocks, llvm::msf::SuperBlock::BlockSize, llvm::msf::MSFStreamLayout::Length, llvm::msf::MSFLayout::SB, llvm::msf::MSFLayout::StreamMap, and llvm::msf::MSFLayout::StreamSizes.
Referenced by llvm::pdb::PDBFile::createIndexedStream().
|
static |
Definition at line 50 of file MappedBlockStream.cpp.
References Allocator.
Referenced by createDirectoryStream(), and createFpmStream().
|
inline |
Definition at line 68 of file MappedBlockStream.h.
References Allocator.
|
inline |
Definition at line 72 of file MappedBlockStream.h.
References BlockSize.
Referenced by llvm::msf::WritableMappedBlockStream::getBlockSize().
|
inlineoverridevirtual |
Implements llvm::BinaryStream.
Definition at line 57 of file MappedBlockStream.h.
References llvm::little.
|
overridevirtual |
Return the number of bytes of data in this stream.
Implements llvm::BinaryStream.
Definition at line 194 of file MappedBlockStream.cpp.
References llvm::msf::MSFStreamLayout::Length.
Referenced by llvm::msf::WritableMappedBlockStream::getLength().
|
inline |
Definition at line 73 of file MappedBlockStream.h.
References llvm::msf::MSFStreamLayout::Blocks.
Referenced by llvm::msf::WritableMappedBlockStream::getNumBlocks(), and readLongestContiguousChunk().
|
inline |
Definition at line 74 of file MappedBlockStream.h.
References llvm::msf::MSFStreamLayout::Length.
Referenced by llvm::msf::WritableMappedBlockStream::getStreamLength().
void MappedBlockStream::invalidateCache | ( | ) |
Definition at line 270 of file MappedBlockStream.cpp.
|
overridevirtual |
Given an offset into the stream and a number of bytes, attempt to read the bytes and set the output ArrayRef to point to data owned by the stream.
Implements llvm::BinaryStream.
Definition at line 86 of file MappedBlockStream.cpp.
References llvm::AbsoluteDifference(), llvm::BumpPtrAllocatorImpl< AllocatorT, SlabSize, SizeThreshold, GrowthDelay >::Allocate(), llvm::BinaryStream::checkOffsetForRead(), intersect(), llvm::List, llvm::Offset, readBytes(), Size, llvm::ArrayRef< T >::slice(), and llvm::Error::success().
Referenced by readBytes(), and llvm::msf::WritableMappedBlockStream::readBytes().
|
overridevirtual |
Given an offset into the stream, read as much as possible without copying any data.
Implements llvm::BinaryStream.
Definition at line 164 of file MappedBlockStream.cpp.
References llvm::msf::MSFStreamLayout::Blocks, llvm::msf::blockToOffset(), llvm::BinaryStream::checkOffsetForRead(), llvm::First, getNumBlocks(), llvm::Last, llvm::Offset, llvm::BinaryStreamRef::readBytes(), and llvm::Error::success().
Referenced by llvm::msf::WritableMappedBlockStream::readLongestContiguousChunk().
|
friend |
Definition at line 38 of file MappedBlockStream.h.