diff options
author | Lang Hames <lhames@gmail.com> | 2021-10-11 19:23:41 -0700 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2021-10-11 19:23:41 -0700 |
commit | 6641d29b70993bce6dbd7e0e0f1040753d38842f (patch) | |
tree | fc16c9a66e305d125d428e65b98e5b9d31884a5d /llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | |
parent | e50aea58d59c8cfae807a7fee21c4227472c0678 (diff) | |
download | llvm-6641d29b70993bce6dbd7e0e0f1040753d38842f.zip llvm-6641d29b70993bce6dbd7e0e0f1040753d38842f.tar.gz llvm-6641d29b70993bce6dbd7e0e0f1040753d38842f.tar.bz2 |
Revert "[JITLink][ORC] Major JITLinkMemoryManager refactor."
This reverts commit e50aea58d59c8cfae807a7fee21c4227472c0678 while I
investigate bot failures.
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp index 22a6425..40d4f19 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -306,7 +306,8 @@ public: return Error::success(); } - void notifyFinalized(JITLinkMemoryManager::FinalizedAlloc A) override { + void notifyFinalized( + std::unique_ptr<JITLinkMemoryManager::Allocation> A) override { if (auto Err = Layer.notifyEmitted(*MR, std::move(A))) { Layer.getExecutionSession().reportError(std::move(Err)); MR->failMaterialization(); @@ -679,7 +680,7 @@ void ObjectLinkingLayer::notifyLoaded(MaterializationResponsibility &MR) { } Error ObjectLinkingLayer::notifyEmitted(MaterializationResponsibility &MR, - FinalizedAlloc FA) { + AllocPtr Alloc) { Error Err = Error::success(); for (auto &P : Plugins) Err = joinErrors(std::move(Err), P->notifyEmitted(MR)); @@ -688,20 +689,17 @@ Error ObjectLinkingLayer::notifyEmitted(MaterializationResponsibility &MR, return Err; return MR.withResourceKeyDo( - [&](ResourceKey K) { Allocs[K].push_back(std::move(FA)); }); + [&](ResourceKey K) { Allocs[K].push_back(std::move(Alloc)); }); } Error ObjectLinkingLayer::handleRemoveResources(ResourceKey K) { - { - Error Err = Error::success(); - for (auto &P : Plugins) - Err = joinErrors(std::move(Err), P->notifyRemovingResources(K)); - if (Err) - return Err; - } + Error Err = Error::success(); - std::vector<FinalizedAlloc> AllocsToRemove; + for (auto &P : Plugins) + Err = joinErrors(std::move(Err), P->notifyRemovingResources(K)); + + std::vector<AllocPtr> AllocsToRemove; getExecutionSession().runSessionLocked([&] { auto I = Allocs.find(K); if (I != Allocs.end()) { @@ -710,7 +708,12 @@ Error ObjectLinkingLayer::handleRemoveResources(ResourceKey K) { } }); - return MemMgr.deallocate(std::move(AllocsToRemove)); + while (!AllocsToRemove.empty()) { + Err = joinErrors(std::move(Err), AllocsToRemove.back()->deallocate()); + AllocsToRemove.pop_back(); + } + + return Err; } void ObjectLinkingLayer::handleTransferResources(ResourceKey DstKey, |