11 #ifndef LLVM_SUPPORT_STREAMABLEMEMORYOBJECT_H
12 #define LLVM_SUPPORT_STREAMABLEMEMORYOBJECT_H
84 virtual const uint8_t *
getPointer(uint64_t address, uint64_t size)
const = 0;
98 virtual bool isObjectEnd(uint64_t address)
const = 0;
113 uint8_t *buf) const LLVM_OVERRIDE;
115 uint64_t size) const LLVM_OVERRIDE {
120 assert(0 &&
"getPointer in streaming memory objects not allowed");
138 const static uint32_t kChunkSize = 4096 * 4;
139 mutable std::vector<unsigned char> Bytes;
141 mutable size_t BytesRead;
143 mutable size_t ObjectSize;
144 mutable bool EOFReached;
151 bool fetchToPos(
size_t Pos)
const {
152 if (EOFReached)
return Pos < ObjectSize;
153 while (Pos >= BytesRead) {
154 Bytes.resize(BytesRead + BytesSkipped + kChunkSize);
155 size_t bytes = Streamer->GetBytes(&Bytes[BytesRead + BytesSkipped],
158 if (bytes < kChunkSize) {
159 if (ObjectSize && BytesRead < Pos)
160 assert(0 &&
"Unexpected short read fetching bitcode");
161 if (BytesRead <= Pos) {
162 ObjectSize = BytesRead;
176 const
unsigned char *Start, const
unsigned char *End);
179 #endif // STREAMABLEMEMORYOBJECT_H_
virtual const uint8_t * getPointer(uint64_t address, uint64_t size) const =0
virtual int readBytes(uint64_t address, uint64_t size, uint8_t *buf) const LLVM_OVERRIDE=0
virtual const uint8_t * getPointer(uint64_t address, uint64_t size) const LLVM_OVERRIDE
virtual bool isValidAddress(uint64_t address) const LLVM_OVERRIDE
virtual int readByte(uint64_t address, uint8_t *ptr) const LLVM_OVERRIDE
virtual uint64_t getBase() const LLVM_OVERRIDE=0
virtual uint64_t getExtent() const LLVM_OVERRIDE=0
StreamingMemoryObject(DataStreamer *streamer)
void setKnownObjectSize(size_t size)
virtual ~StreamableMemoryObject()
Destructor - Override as necessary.
StreamableMemoryObject * getNonStreamedMemoryObject(const unsigned char *Start, const unsigned char *End)
virtual bool isObjectEnd(uint64_t address) const =0
virtual uint64_t getExtent() const LLVM_OVERRIDE
#define LLVM_DELETED_FUNCTION
virtual int readBytes(uint64_t address, uint64_t size, uint8_t *buf) const LLVM_OVERRIDE
virtual bool isValidAddress(uint64_t address) const =0
virtual bool isObjectEnd(uint64_t address) const LLVM_OVERRIDE
bool dropLeadingBytes(size_t s)
virtual uint64_t getBase() const LLVM_OVERRIDE
virtual int readByte(uint64_t address, uint8_t *ptr) const LLVM_OVERRIDE=0