Skip to content

Commit f8a2a50

Browse files
committed
[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.
1 parent a7d1d38 commit f8a2a50

File tree

4 files changed

+10
-11
lines changed

4 files changed

+10
-11
lines changed

llvm/include/llvm/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class JITLinkRedirectableSymbolManager : public RedirectableSymbolManager {
4040
}
4141

4242
void emitRedirectableSymbols(std::unique_ptr<MaterializationResponsibility> R,
43-
const SymbolAddrMap &InitialDests) override;
43+
SymbolAddrMap InitialDests) override;
4444

4545
Error redirect(JITDylib &JD, const SymbolAddrMap &NewDests) override;
4646

llvm/include/llvm/ExecutionEngine/Orc/RedirectionManager.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ class RedirectableSymbolManager : public RedirectionManager {
4747
public:
4848
/// Create redirectable symbols with given symbol names and initial
4949
/// desitnation symbol addresses.
50-
Error createRedirectableSymbols(ResourceTrackerSP RT,
51-
const SymbolMap &InitialDests);
50+
Error createRedirectableSymbols(ResourceTrackerSP RT, SymbolMap InitialDests);
5251

5352
/// Create a single redirectable symbol with given symbol name and initial
5453
/// desitnation symbol address.
@@ -60,17 +59,17 @@ class RedirectableSymbolManager : public RedirectionManager {
6059
/// Emit redirectable symbol
6160
virtual void
6261
emitRedirectableSymbols(std::unique_ptr<MaterializationResponsibility> MR,
63-
const SymbolMap &InitialDests) = 0;
62+
SymbolMap InitialDests) = 0;
6463
};
6564

6665
/// RedirectableMaterializationUnit materializes redirectable symbol
6766
/// by invoking RedirectableSymbolManager::emitRedirectableSymbols
6867
class RedirectableMaterializationUnit : public MaterializationUnit {
6968
public:
7069
RedirectableMaterializationUnit(RedirectableSymbolManager &RM,
71-
const SymbolMap &InitialDests)
70+
SymbolMap InitialDests)
7271
: MaterializationUnit(convertToFlags(InitialDests)), RM(RM),
73-
InitialDests(InitialDests) {}
72+
InitialDests(std::move(InitialDests)) {}
7473

7574
StringRef getName() const override {
7675
return "RedirectableSymbolMaterializationUnit";

llvm/lib/ExecutionEngine/Orc/JITLinkRedirectableSymbolManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ constexpr StringRef StubSuffix = "$__stub_ptr";
2424

2525
void JITLinkRedirectableSymbolManager::emitRedirectableSymbols(
2626
std::unique_ptr<MaterializationResponsibility> R,
27-
const SymbolAddrMap &InitialDests) {
27+
SymbolAddrMap InitialDests) {
2828

2929
auto &ES = ObjLinkingLayer.getExecutionSession();
3030
Triple TT = ES.getTargetTriple();

llvm/lib/ExecutionEngine/Orc/RedirectionManager.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ using namespace llvm::orc;
1616
void RedirectionManager::anchor() {}
1717

1818
Error RedirectableSymbolManager::createRedirectableSymbols(
19-
ResourceTrackerSP RT, const SymbolMap &InitialDests) {
19+
ResourceTrackerSP RT, SymbolMap InitialDests) {
2020
auto &JD = RT->getJITDylib();
21-
return JD.define(
22-
std::make_unique<RedirectableMaterializationUnit>(*this, InitialDests),
23-
RT);
21+
return JD.define(std::make_unique<RedirectableMaterializationUnit>(
22+
*this, std::move(InitialDests)),
23+
RT);
2424
}

0 commit comments

Comments
 (0)