mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 21:24:00 +00:00
Revising the MCJIT ObjectCache interface to allow subclasses to avoid retaining references to returned objects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185221 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -45,6 +45,16 @@ public:
|
||||
ObjMap[ModuleID] = copyBuffer(Obj);
|
||||
}
|
||||
|
||||
virtual MemoryBuffer* getObject(const Module* M) {
|
||||
const MemoryBuffer* BufferFound = getObjectInternal(M);
|
||||
ModulesLookedUp.insert(M->getModuleIdentifier());
|
||||
if (!BufferFound)
|
||||
return NULL;
|
||||
// Our test cache wants to maintain ownership of its object buffers
|
||||
// so we make a copy here for the execution engine.
|
||||
return MemoryBuffer::getMemBufferCopy(BufferFound->getBuffer());
|
||||
}
|
||||
|
||||
// Test-harness-specific functions
|
||||
bool wereDuplicatesInserted() { return DuplicateInserted; }
|
||||
|
||||
@ -62,13 +72,6 @@ public:
|
||||
return it->second;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual const MemoryBuffer* getObject(const Module* M) {
|
||||
const MemoryBuffer* BufferFound = getObjectInternal(M);
|
||||
ModulesLookedUp.insert(M->getModuleIdentifier());
|
||||
return BufferFound;
|
||||
}
|
||||
|
||||
private:
|
||||
MemoryBuffer *copyBuffer(const MemoryBuffer *Buf) {
|
||||
// Create a local copy of the buffer.
|
||||
|
Reference in New Issue
Block a user