[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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user