Skip to content

Commit cb5702c

Browse files
committed
[ORC] Pass symbol name to discard by const reference.
This saves some unnecessary atomic ref-counting operations. llvm-svn: 343927
1 parent 9fa1c66 commit cb5702c

File tree

9 files changed

+17
-15
lines changed

9 files changed

+17
-15
lines changed

llvm/include/llvm/ExecutionEngine/Orc/Core.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ class MaterializationUnit {
255255

256256
/// Called by JITDylibs to notify MaterializationUnits that the given symbol
257257
/// has been overridden.
258-
void doDiscard(const JITDylib &JD, SymbolStringPtr Name) {
258+
void doDiscard(const JITDylib &JD, const SymbolStringPtr &Name) {
259259
SymbolFlags.erase(Name);
260260
discard(JD, std::move(Name));
261261
}
@@ -275,7 +275,7 @@ class MaterializationUnit {
275275
/// from the source (e.g. if the source is an LLVM IR Module and the
276276
/// symbol is a function, delete the function body or mark it available
277277
/// externally).
278-
virtual void discard(const JITDylib &JD, SymbolStringPtr Name) = 0;
278+
virtual void discard(const JITDylib &JD, const SymbolStringPtr &Name) = 0;
279279
};
280280

281281
using MaterializationUnitList =
@@ -293,7 +293,7 @@ class AbsoluteSymbolsMaterializationUnit : public MaterializationUnit {
293293

294294
private:
295295
void materialize(MaterializationResponsibility R) override;
296-
void discard(const JITDylib &JD, SymbolStringPtr Name) override;
296+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
297297
static SymbolFlagsMap extractFlags(const SymbolMap &Symbols);
298298

299299
SymbolMap Symbols;
@@ -344,7 +344,7 @@ class ReExportsMaterializationUnit : public MaterializationUnit {
344344

345345
private:
346346
void materialize(MaterializationResponsibility R) override;
347-
void discard(const JITDylib &JD, SymbolStringPtr Name) override;
347+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
348348
static SymbolFlagsMap extractFlags(const SymbolAliasMap &Aliases);
349349

350350
JITDylib *SourceJD = nullptr;

llvm/include/llvm/ExecutionEngine/Orc/Layer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class IRMaterializationUnit : public MaterializationUnit {
9696
SymbolNameToDefinitionMap SymbolToDefinition;
9797

9898
private:
99-
void discard(const JITDylib &JD, SymbolStringPtr Name) override;
99+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
100100
};
101101

102102
/// MaterializationUnit that materializes modules by calling the 'emit' method
@@ -158,7 +158,7 @@ class BasicObjectLayerMaterializationUnit : public MaterializationUnit {
158158
private:
159159

160160
void materialize(MaterializationResponsibility R) override;
161-
void discard(const JITDylib &JD, SymbolStringPtr Name) override;
161+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
162162

163163
ObjectLayer &L;
164164
VModuleKey K;

llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class LazyReexportsMaterializationUnit : public MaterializationUnit {
165165

166166
private:
167167
void materialize(MaterializationResponsibility R) override;
168-
void discard(const JITDylib &JD, SymbolStringPtr Name) override;
168+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override;
169169
static SymbolFlagsMap extractFlags(const SymbolAliasMap &Aliases);
170170

171171
LazyCallThroughManager &LCTManager;

llvm/lib/ExecutionEngine/Orc/CompileOnDemandLayer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class PartitioningIRMaterializationUnit : public IRMaterializationUnit {
8585
std::move(SymbolToDefinition));
8686
}
8787

88-
void discard(const JITDylib &V, SymbolStringPtr Name) override {
88+
void discard(const JITDylib &V, const SymbolStringPtr &Name) override {
8989
// All original symbols were materialized by the CODLayer and should be
9090
// final. The function bodies provided by M should never be overridden.
9191
llvm_unreachable("Discard should never be called on an "

llvm/lib/ExecutionEngine/Orc/Core.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ void AbsoluteSymbolsMaterializationUnit::materialize(
489489
}
490490

491491
void AbsoluteSymbolsMaterializationUnit::discard(const JITDylib &JD,
492-
SymbolStringPtr Name) {
492+
const SymbolStringPtr &Name) {
493493
assert(Symbols.count(Name) && "Symbol is not part of this MU");
494494
Symbols.erase(Name);
495495
}
@@ -637,7 +637,7 @@ void ReExportsMaterializationUnit::materialize(
637637
}
638638

639639
void ReExportsMaterializationUnit::discard(const JITDylib &JD,
640-
SymbolStringPtr Name) {
640+
const SymbolStringPtr &Name) {
641641
assert(Aliases.count(Name) &&
642642
"Symbol not covered by this MaterializationUnit");
643643
Aliases.erase(Name);

llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class CompileCallbackMaterializationUnit : public orc::MaterializationUnit {
4141
R.emit();
4242
}
4343

44-
void discard(const JITDylib &JD, SymbolStringPtr Name) override {
44+
void discard(const JITDylib &JD, const SymbolStringPtr &Name) override {
4545
llvm_unreachable("Discard should never occur on a LMU?");
4646
}
4747

llvm/lib/ExecutionEngine/Orc/Layer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ StringRef IRMaterializationUnit::getName() const {
5353
return "<null module>";
5454
}
5555

56-
void IRMaterializationUnit::discard(const JITDylib &JD, SymbolStringPtr Name) {
56+
void IRMaterializationUnit::discard(const JITDylib &JD,
57+
const SymbolStringPtr &Name) {
5758
LLVM_DEBUG(JD.getExecutionSession().runSessionLocked([&]() {
5859
dbgs() << "In " << JD.getName() << " discarding " << *Name << " from MU@"
5960
<< this << " (" << getName() << ")\n";
@@ -145,7 +146,7 @@ void BasicObjectLayerMaterializationUnit::materialize(
145146
}
146147

147148
void BasicObjectLayerMaterializationUnit::discard(const JITDylib &JD,
148-
SymbolStringPtr Name) {
149+
const SymbolStringPtr &Name) {
149150
// FIXME: Support object file level discard. This could be done by building a
150151
// filter to pass to the object layer along with the object itself.
151152
}

llvm/lib/ExecutionEngine/Orc/LazyReexports.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ void LazyReexportsMaterializationUnit::materialize(
187187
}
188188

189189
void LazyReexportsMaterializationUnit::discard(const JITDylib &JD,
190-
SymbolStringPtr Name) {
190+
const SymbolStringPtr &Name) {
191191
assert(CallableAliases.count(Name) &&
192192
"Symbol not covered by this MaterializationUnit");
193193
CallableAliases.erase(Name);

llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ class SimpleMaterializationUnit : public orc::MaterializationUnit {
112112
Materialize(std::move(R));
113113
}
114114

115-
void discard(const orc::JITDylib &JD, orc::SymbolStringPtr Name) override {
115+
void discard(const orc::JITDylib &JD,
116+
const orc::SymbolStringPtr &Name) override {
116117
if (Discard)
117118
Discard(JD, std::move(Name));
118119
else

0 commit comments

Comments
 (0)