[llvm] r343427 - [ORC] Add an 'intern' method to ExecutionEngine for interning symbol names.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 30 16:18:24 PDT 2018


Author: lhames
Date: Sun Sep 30 16:18:24 2018
New Revision: 343427

URL: http://llvm.org/viewvc/llvm-project?rev=343427&view=rev
Log:
[ORC] Add an 'intern' method to ExecutionEngine for interning symbol names.

This cuts down on boilerplate by reducing 'ES.getSymbolStringPool().intern(...)'
to 'ES.intern(...)'.

Modified:
    llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.h
    llvm/trunk/lib/ExecutionEngine/Orc/Core.cpp
    llvm/trunk/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
    llvm/trunk/lib/ExecutionEngine/Orc/LLJIT.cpp
    llvm/trunk/lib/ExecutionEngine/Orc/Layer.cpp
    llvm/trunk/lib/ExecutionEngine/Orc/Legacy.cpp
    llvm/trunk/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
    llvm/trunk/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp
    llvm/trunk/unittests/ExecutionEngine/Orc/OrcTestCommon.h
    llvm/trunk/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayer2Test.cpp

Modified: llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.h?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.h (original)
+++ llvm/trunk/include/llvm/ExecutionEngine/Orc/Core.h Sun Sep 30 16:18:24 2018
@@ -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()) {

Modified: llvm/trunk/lib/ExecutionEngine/Orc/Core.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/Core.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/Core.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/Core.cpp Sun Sep 30 16:18:24 2018
@@ -1873,7 +1873,7 @@ SymbolStringPtr MangleAndInterner::opera
     raw_string_ostream MangledNameStream(MangledName);
     Mangler::getNameWithPrefix(MangledNameStream, Name, DL);
   }
-  return ES.getSymbolStringPool().intern(MangledName);
+  return ES.intern(MangledName);
 }
 
 } // End namespace orc.

Modified: llvm/trunk/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/IndirectionUtils.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/IndirectionUtils.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/IndirectionUtils.cpp Sun Sep 30 16:18:24 2018
@@ -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;

Modified: llvm/trunk/lib/ExecutionEngine/Orc/LLJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/LLJIT.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/LLJIT.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/LLJIT.cpp Sun Sep 30 16:18:24 2018
@@ -54,7 +54,7 @@ LLJIT::Create(JITTargetMachineBuilder JT
 }
 
 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,
 
 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,

Modified: llvm/trunk/lib/ExecutionEngine/Orc/Layer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/Layer.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/Layer.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/Layer.cpp Sun Sep 30 16:18:24 2018
@@ -170,7 +170,7 @@ Expected<SymbolFlagsMap> getObjectSymbol
     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();

Modified: llvm/trunk/lib/ExecutionEngine/Orc/Legacy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/Legacy.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/Legacy.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/Legacy.cpp Sun Sep 30 16:18:24 2018
@@ -22,7 +22,7 @@ void JITSymbolResolverAdapter::lookup(co
                                       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::Looku
 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;

Modified: llvm/trunk/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp Sun Sep 30 16:18:24 2018
@@ -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::onObjLo
     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

Modified: llvm/trunk/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp (original)
+++ llvm/trunk/unittests/ExecutionEngine/Orc/LazyCallThroughAndReexportsTest.cpp Sun Sep 30 16:18:24 2018
@@ -33,7 +33,7 @@ TEST_F(LazyReexportsTest, BasicLocalCall
     return;
   }
 
-  auto DummyTarget = ES.getSymbolStringPool().intern("DummyTarget");
+  auto DummyTarget = ES.intern("DummyTarget");
 
   bool DummyTargetMaterialized = false;
 

Modified: llvm/trunk/unittests/ExecutionEngine/Orc/OrcTestCommon.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/Orc/OrcTestCommon.h?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/unittests/ExecutionEngine/Orc/OrcTestCommon.h (original)
+++ llvm/trunk/unittests/ExecutionEngine/Orc/OrcTestCommon.h Sun Sep 30 16:18:24 2018
@@ -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;

Modified: llvm/trunk/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayer2Test.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayer2Test.cpp?rev=343427&r1=343426&r2=343427&view=diff
==============================================================================
--- llvm/trunk/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayer2Test.cpp (original)
+++ llvm/trunk/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayer2Test.cpp Sun Sep 30 16:18:24 2018
@@ -52,7 +52,7 @@ static bool testSetProcessAllSections(st
 
   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, Test
   // 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, Test
   // 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));




More information about the llvm-commits mailing list