[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.
This commit is contained in:
Lang Hames
2024-11-05 15:39:03 +11:00
parent a7d1d381d2
commit f8a2a5025e
4 changed files with 10 additions and 11 deletions

View File

@@ -40,7 +40,7 @@ public:
}
void emitRedirectableSymbols(std::unique_ptr<MaterializationResponsibility> R,
const SymbolAddrMap &InitialDests) override;
SymbolAddrMap InitialDests) override;
Error redirect(JITDylib &JD, const SymbolAddrMap &NewDests) override;

View File

@@ -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<MaterializationResponsibility> 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";

View File

@@ -24,7 +24,7 @@ constexpr StringRef StubSuffix = "$__stub_ptr";
void JITLinkRedirectableSymbolManager::emitRedirectableSymbols(
std::unique_ptr<MaterializationResponsibility> R,
const SymbolAddrMap &InitialDests) {
SymbolAddrMap InitialDests) {
auto &ES = ObjLinkingLayer.getExecutionSession();
Triple TT = ES.getTargetTriple();

View File

@@ -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<RedirectableMaterializationUnit>(*this, InitialDests),
RT);
return JD.define(std::make_unique<RedirectableMaterializationUnit>(
*this, std::move(InitialDests)),
RT);
}