summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp41
1 files changed, 10 insertions, 31 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp b/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp
index 1e2d58cd562..c03b935baeb 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp
@@ -144,27 +144,6 @@ OrcX86_64::insertCompileCallbackTrampolines(Module &M,
return GetLabelName;
}
-OrcX86_64::IndirectStubsInfo::IndirectStubsInfo(IndirectStubsInfo &&Other) {
- StubsBlock = std::move(Other.StubsBlock);
- PtrsBlock = std::move(Other.PtrsBlock);
- Other.StubsBlock = sys::MemoryBlock();
- Other.PtrsBlock = sys::MemoryBlock();
-}
-
-OrcX86_64::IndirectStubsInfo&
-OrcX86_64::IndirectStubsInfo::operator=(IndirectStubsInfo &&Other) {
- StubsBlock = std::move(Other.StubsBlock);
- PtrsBlock = std::move(Other.PtrsBlock);
- Other.StubsBlock = sys::MemoryBlock();
- Other.PtrsBlock = sys::MemoryBlock();
- return *this;
-}
-
-OrcX86_64::IndirectStubsInfo::~IndirectStubsInfo() {
- sys::Memory::releaseMappedMemory(StubsBlock);
- sys::Memory::releaseMappedMemory(PtrsBlock);
-}
-
std::error_code OrcX86_64::emitIndirectStubsBlock(IndirectStubsInfo &StubsInfo,
unsigned MinStubs,
void *InitialPtrVal) {
@@ -197,19 +176,20 @@ std::error_code OrcX86_64::emitIndirectStubsBlock(IndirectStubsInfo &StubsInfo,
// Allocate memory for stubs and pointers in one call.
std::error_code EC;
- auto InitialBlock = sys::Memory::allocateMappedMemory(2 * NumPages * PageSize,
- nullptr,
- sys::Memory::MF_READ |
- sys::Memory::MF_WRITE,
- EC);
+ auto StubsMem =
+ sys::OwningMemoryBlock(
+ sys::Memory::allocateMappedMemory(2 * NumPages * PageSize, nullptr,
+ sys::Memory::MF_READ |
+ sys::Memory::MF_WRITE,
+ EC));
if (EC)
return EC;
// Create separate MemoryBlocks representing the stubs and pointers.
- sys::MemoryBlock StubsBlock(InitialBlock.base(), NumPages * PageSize);
- sys::MemoryBlock PtrsBlock(static_cast<char*>(InitialBlock.base()) +
- NumPages * PageSize,
+ sys::MemoryBlock StubsBlock(StubsMem.base(), NumPages * PageSize);
+ sys::MemoryBlock PtrsBlock(static_cast<char*>(StubsMem.base()) +
+ NumPages * PageSize,
NumPages * PageSize);
// Populate the stubs page stubs and mark it executable.
@@ -230,8 +210,7 @@ std::error_code OrcX86_64::emitIndirectStubsBlock(IndirectStubsInfo &StubsInfo,
Ptr[I] = InitialPtrVal;
StubsInfo.NumStubs = NumStubs;
- StubsInfo.StubsBlock = std::move(StubsBlock);
- StubsInfo.PtrsBlock = std::move(PtrsBlock);
+ StubsInfo.StubsMem = std::move(StubsMem);
return std::error_code();
}
OpenPOWER on IntegriCloud