[ORC] Pass symbol name to discard by const reference.

This saves some unnecessary atomic ref-counting operations.

llvm-svn: 343927
diff --git a/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp b/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp
index 78ee0e7..368969b 100644
--- a/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp
@@ -85,7 +85,7 @@
                          std::move(SymbolToDefinition));
   }
 
-  void discard(const JITDylib &V, SymbolStringPtr Name) override {
+  void discard(const JITDylib &V, const SymbolStringPtr &Name) override {
     // All original symbols were materialized by the CODLayer and should be
     // final. The function bodies provided by M should never be overridden.
     llvm_unreachable("Discard should never be called on an "
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index b44427d9..2e70c5c 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -489,7 +489,7 @@
 }
 
 void AbsoluteSymbolsMaterializationUnit::discard(const JITDylib &JD,
-                                                 SymbolStringPtr Name) {
+                                                 const SymbolStringPtr &Name) {
   assert(Symbols.count(Name) && "Symbol is not part of this MU");
   Symbols.erase(Name);
 }
@@ -637,7 +637,7 @@
 }
 
 void ReExportsMaterializationUnit::discard(const JITDylib &JD,
-                                           SymbolStringPtr Name) {
+                                           const SymbolStringPtr &Name) {
   assert(Aliases.count(Name) &&
          "Symbol not covered by this MaterializationUnit");
   Aliases.erase(Name);
diff --git a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
index 962ae33..0acc5db 100644
--- a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
@@ -41,7 +41,7 @@
     R.emit();
   }
 
-  void discard(const JITDylib &JD, SymbolStringPtr Name) override {
+  void discard(const JITDylib &JD, const SymbolStringPtr &Name) override {
     llvm_unreachable("Discard should never occur on a LMU?");
   }
 
diff --git a/llvm/lib/ExecutionEngine/Orc/Layer.cpp b/llvm/lib/ExecutionEngine/Orc/Layer.cpp
index 323e1d2..22dbf5c 100644
--- a/llvm/lib/ExecutionEngine/Orc/Layer.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Layer.cpp
@@ -53,7 +53,8 @@
   return "<null module>";
 }
 
-void IRMaterializationUnit::discard(const JITDylib &JD, SymbolStringPtr Name) {
+void IRMaterializationUnit::discard(const JITDylib &JD,
+                                    const SymbolStringPtr &Name) {
   LLVM_DEBUG(JD.getExecutionSession().runSessionLocked([&]() {
     dbgs() << "In " << JD.getName() << " discarding " << *Name << " from MU@"
            << this << " (" << getName() << ")\n";
@@ -145,7 +146,7 @@
 }
 
 void BasicObjectLayerMaterializationUnit::discard(const JITDylib &JD,
-                                                  SymbolStringPtr Name) {
+                                                  const SymbolStringPtr &Name) {
   // FIXME: Support object file level discard. This could be done by building a
   //        filter to pass to the object layer along with the object itself.
 }
diff --git a/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp b/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp
index 72db80b..0d80491 100644
--- a/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp
@@ -187,7 +187,7 @@
 }
 
 void LazyReexportsMaterializationUnit::discard(const JITDylib &JD,
-                                               SymbolStringPtr Name) {
+                                               const SymbolStringPtr &Name) {
   assert(CallableAliases.count(Name) &&
          "Symbol not covered by this MaterializationUnit");
   CallableAliases.erase(Name);