mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[ORC] Add an 'intern' method to ExecutionEngine for interning symbol names.
This cuts down on boilerplate by reducing 'ES.getSymbolStringPool().intern(...)' to 'ES.intern(...)'. llvm-svn: 343427
This commit is contained in:
parent
4c12d59f85
commit
ede9bf8a18
@ -661,8 +661,11 @@ public:
|
||||
/// SymbolStringPools may be shared between ExecutionSessions.
|
||||
ExecutionSession(std::shared_ptr<SymbolStringPool> SSP = nullptr);
|
||||
|
||||
/// Returns the SymbolStringPool for this ExecutionSession.
|
||||
SymbolStringPool &getSymbolStringPool() const { return *SSP; }
|
||||
/// Add a symbol name to the SymbolStringPool and return a pointer to it.
|
||||
SymbolStringPtr intern(StringRef SymName) { return SSP->intern(SymName); }
|
||||
|
||||
/// Returns a shared_ptr to the SymbolStringPool for this ExecutionSession.
|
||||
std::shared_ptr<SymbolStringPool> getSymbolStringPool() const { return SSP; }
|
||||
|
||||
/// Run the given lambda with the session mutex locked.
|
||||
template <typename Func> auto runSessionLocked(Func &&F) -> decltype(F()) {
|
||||
|
@ -1873,7 +1873,7 @@ SymbolStringPtr MangleAndInterner::operator()(StringRef Name) {
|
||||
raw_string_ostream MangledNameStream(MangledName);
|
||||
Mangler::getNameWithPrefix(MangledNameStream, Name, DL);
|
||||
}
|
||||
return ES.getSymbolStringPool().intern(MangledName);
|
||||
return ES.intern(MangledName);
|
||||
}
|
||||
|
||||
} // End namespace orc.
|
||||
|
@ -60,8 +60,8 @@ void TrampolinePool::anchor() {}
|
||||
Expected<JITTargetAddress>
|
||||
JITCompileCallbackManager::getCompileCallback(CompileFunction Compile) {
|
||||
if (auto TrampolineAddr = TP->getTrampoline()) {
|
||||
auto CallbackName = ES.getSymbolStringPool().intern(
|
||||
std::string("cc") + std::to_string(++NextCallbackId));
|
||||
auto CallbackName =
|
||||
ES.intern(std::string("cc") + std::to_string(++NextCallbackId));
|
||||
|
||||
std::lock_guard<std::mutex> Lock(CCMgrMutex);
|
||||
AddrToSymbol[*TrampolineAddr] = CallbackName;
|
||||
|
@ -54,7 +54,7 @@ LLJIT::Create(JITTargetMachineBuilder JTMB, DataLayout DL,
|
||||
}
|
||||
|
||||
Error LLJIT::defineAbsolute(StringRef Name, JITEvaluatedSymbol Sym) {
|
||||
auto InternedName = ES->getSymbolStringPool().intern(Name);
|
||||
auto InternedName = ES->intern(Name);
|
||||
SymbolMap Symbols({{InternedName, Sym}});
|
||||
return Main.define(absoluteSymbols(std::move(Symbols)));
|
||||
}
|
||||
@ -78,7 +78,7 @@ Error LLJIT::addObjectFile(JITDylib &JD, std::unique_ptr<MemoryBuffer> Obj) {
|
||||
|
||||
Expected<JITEvaluatedSymbol> LLJIT::lookupLinkerMangled(JITDylib &JD,
|
||||
StringRef Name) {
|
||||
return llvm::orc::lookup({&JD}, ES->getSymbolStringPool().intern(Name));
|
||||
return llvm::orc::lookup({&JD}, ES->intern(Name));
|
||||
}
|
||||
|
||||
LLJIT::LLJIT(std::unique_ptr<ExecutionSession> ES,
|
||||
|
@ -170,7 +170,7 @@ Expected<SymbolFlagsMap> getObjectSymbolFlags(ExecutionSession &ES,
|
||||
auto Name = Sym.getName();
|
||||
if (!Name)
|
||||
return Name.takeError();
|
||||
auto InternedName = ES.getSymbolStringPool().intern(*Name);
|
||||
auto InternedName = ES.intern(*Name);
|
||||
auto SymFlags = JITSymbolFlags::fromObjectSymbol(Sym);
|
||||
if (!SymFlags)
|
||||
return SymFlags.takeError();
|
||||
|
@ -22,7 +22,7 @@ void JITSymbolResolverAdapter::lookup(const LookupSet &Symbols,
|
||||
OnResolvedFunction OnResolved) {
|
||||
SymbolNameSet InternedSymbols;
|
||||
for (auto &S : Symbols)
|
||||
InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
|
||||
InternedSymbols.insert(ES.intern(S));
|
||||
|
||||
auto OnResolvedWithUnwrap = [OnResolved](Expected<SymbolMap> InternedResult) {
|
||||
if (!InternedResult) {
|
||||
@ -52,7 +52,7 @@ Expected<JITSymbolResolverAdapter::LookupSet>
|
||||
JITSymbolResolverAdapter::getResponsibilitySet(const LookupSet &Symbols) {
|
||||
SymbolNameSet InternedSymbols;
|
||||
for (auto &S : Symbols)
|
||||
InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
|
||||
InternedSymbols.insert(ES.intern(S));
|
||||
|
||||
auto InternedResult = R.getResponsibilitySet(InternedSymbols);
|
||||
LookupSet Result;
|
||||
|
@ -24,7 +24,7 @@ public:
|
||||
|
||||
// Intern the requested symbols: lookup takes interned strings.
|
||||
for (auto &S : Symbols)
|
||||
InternedSymbols.insert(ES.getSymbolStringPool().intern(S));
|
||||
InternedSymbols.insert(ES.intern(S));
|
||||
|
||||
// Build an OnResolve callback to unwrap the interned strings and pass them
|
||||
// to the OnResolved callback.
|
||||
@ -167,8 +167,7 @@ Error RTDyldObjectLinkingLayer2::onObjLoad(
|
||||
if (InternalSymbols.count(KV.first))
|
||||
continue;
|
||||
|
||||
auto InternedName =
|
||||
getExecutionSession().getSymbolStringPool().intern(KV.first);
|
||||
auto InternedName = getExecutionSession().intern(KV.first);
|
||||
auto Flags = KV.second.getFlags();
|
||||
|
||||
// Override object flags and claim responsibility for symbols if
|
||||
|
@ -33,7 +33,7 @@ TEST_F(LazyReexportsTest, BasicLocalCallThroughManagerOperation) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto DummyTarget = ES.getSymbolStringPool().intern("DummyTarget");
|
||||
auto DummyTarget = ES.intern("DummyTarget");
|
||||
|
||||
bool DummyTargetMaterialized = false;
|
||||
|
||||
|
@ -50,10 +50,10 @@ protected:
|
||||
std::shared_ptr<SymbolStringPool> SSP = std::make_shared<SymbolStringPool>();
|
||||
ExecutionSession ES{SSP};
|
||||
JITDylib &JD = ES.createJITDylib("JD");
|
||||
SymbolStringPtr Foo = ES.getSymbolStringPool().intern("foo");
|
||||
SymbolStringPtr Bar = ES.getSymbolStringPool().intern("bar");
|
||||
SymbolStringPtr Baz = ES.getSymbolStringPool().intern("baz");
|
||||
SymbolStringPtr Qux = ES.getSymbolStringPool().intern("qux");
|
||||
SymbolStringPtr Foo = ES.intern("foo");
|
||||
SymbolStringPtr Bar = ES.intern("bar");
|
||||
SymbolStringPtr Baz = ES.intern("baz");
|
||||
SymbolStringPtr Qux = ES.intern("qux");
|
||||
static const JITTargetAddress FooAddr = 1U;
|
||||
static const JITTargetAddress BarAddr = 2U;
|
||||
static const JITTargetAddress BazAddr = 3U;
|
||||
|
@ -52,7 +52,7 @@ static bool testSetProcessAllSections(std::unique_ptr<MemoryBuffer> Obj,
|
||||
|
||||
ExecutionSession ES;
|
||||
auto &JD = ES.createJITDylib("main");
|
||||
auto Foo = ES.getSymbolStringPool().intern("foo");
|
||||
auto Foo = ES.intern("foo");
|
||||
|
||||
RTDyldObjectLinkingLayer2 ObjLayer(ES, [&DebugSectionSeen](VModuleKey) {
|
||||
return llvm::make_unique<MemoryManagerWrapper>(DebugSectionSeen);
|
||||
@ -150,7 +150,7 @@ TEST(RTDyldObjectLinkingLayer2Test, TestOverrideObjectFlags) {
|
||||
// Create a simple stack and set the override flags option.
|
||||
ExecutionSession ES;
|
||||
auto &JD = ES.createJITDylib("main");
|
||||
auto Foo = ES.getSymbolStringPool().intern("foo");
|
||||
auto Foo = ES.intern("foo");
|
||||
RTDyldObjectLinkingLayer2 ObjLayer(
|
||||
ES, [](VModuleKey) { return llvm::make_unique<SectionMemoryManager>(); });
|
||||
IRCompileLayer2 CompileLayer(ES, ObjLayer, FunkySimpleCompiler(*TM));
|
||||
@ -212,7 +212,7 @@ TEST(RTDyldObjectLinkingLayer2Test, TestAutoClaimResponsibilityForSymbols) {
|
||||
// Create a simple stack and set the override flags option.
|
||||
ExecutionSession ES;
|
||||
auto &JD = ES.createJITDylib("main");
|
||||
auto Foo = ES.getSymbolStringPool().intern("foo");
|
||||
auto Foo = ES.intern("foo");
|
||||
RTDyldObjectLinkingLayer2 ObjLayer(
|
||||
ES, [](VModuleKey) { return llvm::make_unique<SectionMemoryManager>(); });
|
||||
IRCompileLayer2 CompileLayer(ES, ObjLayer, FunkySimpleCompiler(*TM));
|
||||
|
Loading…
Reference in New Issue
Block a user