From f8a2a5025ef890408c7201beec67085b830ecdf7 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Tue, 5 Nov 2024 15:39:03 +1100 Subject: [PATCH] [ORC] Pass InitialDests map for redirectable symbols by value. RedirectableMaterializationUnit needs its own copy of this map anyway, so passing by value allows us to potentially omit a copy. --- .../Orc/JITLinkRedirectableSymbolManager.h | 2 +- .../llvm/ExecutionEngine/Orc/RedirectionManager.h | 9 ++++----- .../Orc/JITLinkRedirectableSymbolManager.cpp | 2 +- llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp | 8 ++++---- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/llvm/include/llvm/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.h b/llvm/include/llvm/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.h index 9c6daef92833..ed37ea1ea1f7 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.h @@ -40,7 +40,7 @@ public: } void emitRedirectableSymbols(std::unique_ptr R, - const SymbolAddrMap &InitialDests) override; + SymbolAddrMap InitialDests) override; Error redirect(JITDylib &JD, const SymbolAddrMap &NewDests) override; diff --git a/llvm/include/llvm/ExecutionEngine/Orc/RedirectionManager.h b/llvm/include/llvm/ExecutionEngine/Orc/RedirectionManager.h index f2ea1f5b64c5..ae94bb2af246 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/RedirectionManager.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/RedirectionManager.h @@ -47,8 +47,7 @@ class RedirectableSymbolManager : public RedirectionManager { public: /// Create redirectable symbols with given symbol names and initial /// desitnation symbol addresses. - Error createRedirectableSymbols(ResourceTrackerSP RT, - const SymbolMap &InitialDests); + Error createRedirectableSymbols(ResourceTrackerSP RT, SymbolMap InitialDests); /// Create a single redirectable symbol with given symbol name and initial /// desitnation symbol address. @@ -60,7 +59,7 @@ public: /// Emit redirectable symbol virtual void emitRedirectableSymbols(std::unique_ptr MR, - const SymbolMap &InitialDests) = 0; + SymbolMap InitialDests) = 0; }; /// RedirectableMaterializationUnit materializes redirectable symbol @@ -68,9 +67,9 @@ public: class RedirectableMaterializationUnit : public MaterializationUnit { public: RedirectableMaterializationUnit(RedirectableSymbolManager &RM, - const SymbolMap &InitialDests) + SymbolMap InitialDests) : MaterializationUnit(convertToFlags(InitialDests)), RM(RM), - InitialDests(InitialDests) {} + InitialDests(std::move(InitialDests)) {} StringRef getName() const override { return "RedirectableSymbolMaterializationUnit"; diff --git a/llvm/lib/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.cpp b/llvm/lib/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.cpp index 73136647994f..5ac5604a8ece 100644 --- a/llvm/lib/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.cpp +++ b/llvm/lib/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.cpp @@ -24,7 +24,7 @@ constexpr StringRef StubSuffix = "$__stub_ptr"; void JITLinkRedirectableSymbolManager::emitRedirectableSymbols( std::unique_ptr R, - const SymbolAddrMap &InitialDests) { + SymbolAddrMap InitialDests) { auto &ES = ObjLinkingLayer.getExecutionSession(); Triple TT = ES.getTargetTriple(); diff --git a/llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp b/llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp index cbc77c503430..a4b822bdff61 100644 --- a/llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp +++ b/llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp @@ -16,9 +16,9 @@ using namespace llvm::orc; void RedirectionManager::anchor() {} Error RedirectableSymbolManager::createRedirectableSymbols( - ResourceTrackerSP RT, const SymbolMap &InitialDests) { + ResourceTrackerSP RT, SymbolMap InitialDests) { auto &JD = RT->getJITDylib(); - return JD.define( - std::make_unique(*this, InitialDests), - RT); + return JD.define(std::make_unique( + *this, std::move(InitialDests)), + RT); }