Skip to content

Commit d9a9872

Browse files
authored
[TextAPI] Rename SymbolKind to EncodeKind (#79622)
A distinction that doesn't _usually_ matter is that the MachO::SymbolKind is really a mapping of entries in TBD files not symbols. To better understand this, rename the enum so it represents an encoding mapped to TBDs as opposed to symbols alone. For example, it can be a bit confusing that "GlobalSymbol" is a enum value when all of those values can represent a GlobalSymbol.
1 parent 3bece3d commit d9a9872

20 files changed

+299
-298
lines changed

lld/MachO/InputFiles.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1904,30 +1904,30 @@ DylibFile::DylibFile(const InterfaceFile &interface, DylibFile *umbrella,
19041904
continue;
19051905

19061906
switch (symbol->getKind()) {
1907-
case SymbolKind::GlobalSymbol:
1908-
case SymbolKind::ObjectiveCClass:
1909-
case SymbolKind::ObjectiveCClassEHType:
1910-
case SymbolKind::ObjectiveCInstanceVariable:
1907+
case EncodeKind::GlobalSymbol:
1908+
case EncodeKind::ObjectiveCClass:
1909+
case EncodeKind::ObjectiveCClassEHType:
1910+
case EncodeKind::ObjectiveCInstanceVariable:
19111911
normalSymbols.push_back(symbol);
19121912
}
19131913
}
19141914

19151915
// TODO(compnerd) filter out symbols based on the target platform
19161916
for (const auto *symbol : normalSymbols) {
19171917
switch (symbol->getKind()) {
1918-
case SymbolKind::GlobalSymbol:
1918+
case EncodeKind::GlobalSymbol:
19191919
addSymbol(*symbol, symbol->getName());
19201920
break;
1921-
case SymbolKind::ObjectiveCClass:
1921+
case EncodeKind::ObjectiveCClass:
19221922
// XXX ld64 only creates these symbols when -ObjC is passed in. We may
19231923
// want to emulate that.
19241924
addSymbol(*symbol, objc::klass + symbol->getName());
19251925
addSymbol(*symbol, objc::metaclass + symbol->getName());
19261926
break;
1927-
case SymbolKind::ObjectiveCClassEHType:
1927+
case EncodeKind::ObjectiveCClassEHType:
19281928
addSymbol(*symbol, objc::ehtype + symbol->getName());
19291929
break;
1930-
case SymbolKind::ObjectiveCInstanceVariable:
1930+
case EncodeKind::ObjectiveCInstanceVariable:
19311931
addSymbol(*symbol, objc::ivar + symbol->getName());
19321932
break;
19331933
}

llvm/include/llvm/TextAPI/InterfaceFile.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ class InterfaceFile {
351351
///
352352
/// \param Kind The kind of global symbol to record.
353353
/// \param Name The name of the symbol.
354-
std::optional<const Symbol *> getSymbol(SymbolKind Kind,
354+
std::optional<const Symbol *> getSymbol(EncodeKind Kind,
355355
StringRef Name) const {
356356
if (auto *Sym = SymbolsSet->findSymbol(Kind, Name))
357357
return Sym;
@@ -361,7 +361,7 @@ class InterfaceFile {
361361
/// Add a symbol to the symbols list or extend an existing one.
362362
template <typename RangeT, typename ElT = std::remove_reference_t<
363363
decltype(*std::begin(std::declval<RangeT>()))>>
364-
void addSymbol(SymbolKind Kind, StringRef Name, RangeT &&Targets,
364+
void addSymbol(EncodeKind Kind, StringRef Name, RangeT &&Targets,
365365
SymbolFlags Flags = SymbolFlags::None) {
366366
SymbolsSet->addGlobal(Kind, Name, Flags, Targets);
367367
}
@@ -372,7 +372,7 @@ class InterfaceFile {
372372
/// \param Name The name of the symbol.
373373
/// \param Targets The list of targets the symbol is defined in.
374374
/// \param Flags The properties the symbol holds.
375-
void addSymbol(SymbolKind Kind, StringRef Name, TargetList &&Targets,
375+
void addSymbol(EncodeKind Kind, StringRef Name, TargetList &&Targets,
376376
SymbolFlags Flags = SymbolFlags::None) {
377377
SymbolsSet->addGlobal(Kind, Name, Flags, Targets);
378378
}
@@ -383,7 +383,7 @@ class InterfaceFile {
383383
/// \param Name The name of the symbol.
384384
/// \param Target The target the symbol is defined in.
385385
/// \param Flags The properties the symbol holds.
386-
void addSymbol(SymbolKind Kind, StringRef Name, Target &Target,
386+
void addSymbol(EncodeKind Kind, StringRef Name, Target &Target,
387387
SymbolFlags Flags = SymbolFlags::None) {
388388
SymbolsSet->addGlobal(Kind, Name, Flags, Target);
389389
}

llvm/include/llvm/TextAPI/Symbol.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ enum class SymbolFlags : uint8_t {
5151

5252
// clang-format on
5353

54-
enum class SymbolKind : uint8_t {
54+
/// Mapping of entry types in TextStubs.
55+
enum class EncodeKind : uint8_t {
5556
GlobalSymbol,
5657
ObjectiveCClass,
5758
ObjectiveCClassEHType,
@@ -81,11 +82,11 @@ typename C::iterator addEntry(C &Container, const Target &Targ) {
8182

8283
class Symbol {
8384
public:
84-
Symbol(SymbolKind Kind, StringRef Name, TargetList Targets, SymbolFlags Flags)
85+
Symbol(EncodeKind Kind, StringRef Name, TargetList Targets, SymbolFlags Flags)
8586
: Name(Name), Targets(std::move(Targets)), Kind(Kind), Flags(Flags) {}
8687

8788
void addTarget(Target InputTarget) { addEntry(Targets, InputTarget); }
88-
SymbolKind getKind() const { return Kind; }
89+
EncodeKind getKind() const { return Kind; }
8990
StringRef getName() const { return Name; }
9091
ArchitectureSet getArchitectures() const {
9192
return mapToArchitectureSet(Targets);
@@ -156,21 +157,21 @@ class Symbol {
156157
private:
157158
StringRef Name;
158159
TargetList Targets;
159-
SymbolKind Kind;
160+
EncodeKind Kind;
160161
SymbolFlags Flags;
161162
};
162163

163164
/// Lightweight struct for passing around symbol information.
164165
struct SimpleSymbol {
165166
StringRef Name;
166-
SymbolKind Kind;
167+
EncodeKind Kind;
167168

168169
bool operator<(const SimpleSymbol &O) const {
169170
return std::tie(Name, Kind) < std::tie(O.Name, O.Kind);
170171
}
171172
};
172173

173-
/// Determine SymbolKind from Flags and parsing Name.
174+
/// Determine EncodeKind from Flags and parsing Name.
174175
///
175176
/// \param Name The name of symbol.
176177
/// \param Flags The flags pre-determined for the symbol.

llvm/include/llvm/TextAPI/SymbolSet.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@
2323
namespace llvm {
2424

2525
struct SymbolsMapKey {
26-
MachO::SymbolKind Kind;
26+
MachO::EncodeKind Kind;
2727
StringRef Name;
2828

29-
SymbolsMapKey(MachO::SymbolKind Kind, StringRef Name)
29+
SymbolsMapKey(MachO::EncodeKind Kind, StringRef Name)
3030
: Kind(Kind), Name(Name) {}
3131
};
3232
template <> struct DenseMapInfo<SymbolsMapKey> {
3333
static inline SymbolsMapKey getEmptyKey() {
34-
return SymbolsMapKey(MachO::SymbolKind::GlobalSymbol, StringRef{});
34+
return SymbolsMapKey(MachO::EncodeKind::GlobalSymbol, StringRef{});
3535
}
3636

3737
static inline SymbolsMapKey getTombstoneKey() {
38-
return SymbolsMapKey(MachO::SymbolKind::ObjectiveCInstanceVariable,
38+
return SymbolsMapKey(MachO::EncodeKind::ObjectiveCInstanceVariable,
3939
StringRef{});
4040
}
4141

@@ -87,27 +87,27 @@ class SymbolSet {
8787
using SymbolsMapType = llvm::DenseMap<SymbolsMapKey, Symbol *>;
8888
SymbolsMapType Symbols;
8989

90-
Symbol *addGlobalImpl(SymbolKind, StringRef Name, SymbolFlags Flags);
90+
Symbol *addGlobalImpl(EncodeKind, StringRef Name, SymbolFlags Flags);
9191

9292
public:
9393
SymbolSet() = default;
94-
Symbol *addGlobal(SymbolKind Kind, StringRef Name, SymbolFlags Flags,
94+
Symbol *addGlobal(EncodeKind Kind, StringRef Name, SymbolFlags Flags,
9595
const Target &Targ);
9696
size_t size() const { return Symbols.size(); }
9797

9898
template <typename RangeT, typename ElT = std::remove_reference_t<
9999
decltype(*std::begin(std::declval<RangeT>()))>>
100-
Symbol *addGlobal(SymbolKind Kind, StringRef Name, SymbolFlags Flags,
100+
Symbol *addGlobal(EncodeKind Kind, StringRef Name, SymbolFlags Flags,
101101
RangeT &&Targets) {
102102
auto *Global = addGlobalImpl(Kind, Name, Flags);
103103
for (const auto &Targ : Targets)
104104
Global->addTarget(Targ);
105-
if (Kind == SymbolKind::ObjectiveCClassEHType)
106-
addGlobal(SymbolKind::ObjectiveCClass, Name, Flags, Targets);
105+
if (Kind == EncodeKind::ObjectiveCClassEHType)
106+
addGlobal(EncodeKind::ObjectiveCClass, Name, Flags, Targets);
107107
return Global;
108108
}
109109

110-
const Symbol *findSymbol(SymbolKind Kind, StringRef Name) const;
110+
const Symbol *findSymbol(EncodeKind Kind, StringRef Name) const;
111111

112112
struct const_symbol_iterator
113113
: public iterator_adaptor_base<

llvm/lib/Object/TapiFile.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ TapiFile::TapiFile(MemoryBufferRef Source, const InterfaceFile &Interface,
5656
continue;
5757

5858
switch (Symbol->getKind()) {
59-
case SymbolKind::GlobalSymbol:
59+
case EncodeKind::GlobalSymbol:
6060
Symbols.emplace_back(StringRef(), Symbol->getName(), getFlags(Symbol),
6161
::getType(Symbol));
6262
break;
63-
case SymbolKind::ObjectiveCClass:
63+
case EncodeKind::ObjectiveCClass:
6464
if (Interface.getPlatforms().count(PLATFORM_MACOS) && Arch == AK_i386) {
6565
Symbols.emplace_back(ObjC1ClassNamePrefix, Symbol->getName(),
6666
getFlags(Symbol), ::getType(Symbol));
@@ -71,11 +71,11 @@ TapiFile::TapiFile(MemoryBufferRef Source, const InterfaceFile &Interface,
7171
getFlags(Symbol), ::getType(Symbol));
7272
}
7373
break;
74-
case SymbolKind::ObjectiveCClassEHType:
74+
case EncodeKind::ObjectiveCClassEHType:
7575
Symbols.emplace_back(ObjC2EHTypePrefix, Symbol->getName(),
7676
getFlags(Symbol), ::getType(Symbol));
7777
break;
78-
case SymbolKind::ObjectiveCInstanceVariable:
78+
case EncodeKind::ObjectiveCInstanceVariable:
7979
Symbols.emplace_back(ObjC2IVarPrefix, Symbol->getName(), getFlags(Symbol),
8080
::getType(Symbol));
8181
break;

llvm/lib/TextAPI/RecordVisitor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@ void SymbolConverter::addIVars(const ArrayRef<ObjCIVarRecord *> IVars,
4141
continue;
4242
std::string Name =
4343
ObjCIVarRecord::createScopedName(ContainerName, IV->getName());
44-
Symbols->addGlobal(SymbolKind::ObjectiveCInstanceVariable, Name,
44+
Symbols->addGlobal(EncodeKind::ObjectiveCInstanceVariable, Name,
4545
IV->getFlags(), Targ);
4646
}
4747
}
4848

4949
void SymbolConverter::visitObjCInterface(const ObjCInterfaceRecord &ObjCR) {
5050
if (!shouldSkipRecord(ObjCR, RecordUndefs)) {
51-
Symbols->addGlobal(SymbolKind::ObjectiveCClass, ObjCR.getName(),
51+
Symbols->addGlobal(EncodeKind::ObjectiveCClass, ObjCR.getName(),
5252
ObjCR.getFlags(), Targ);
5353
if (ObjCR.hasExceptionAttribute())
54-
Symbols->addGlobal(SymbolKind::ObjectiveCClassEHType, ObjCR.getName(),
54+
Symbols->addGlobal(EncodeKind::ObjectiveCClassEHType, ObjCR.getName(),
5555
ObjCR.getFlags(), Targ);
5656
}
5757

llvm/lib/TextAPI/RecordsSlice.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ Record *RecordsSlice::addRecord(StringRef Name, SymbolFlags Flags,
2525
auto [APIName, SymKind] = parseSymbol(Name, Flags);
2626
Name = APIName;
2727
switch (SymKind) {
28-
case SymbolKind::GlobalSymbol:
28+
case EncodeKind::GlobalSymbol:
2929
return addGlobal(Name, Linkage, GV, Flags);
30-
case SymbolKind::ObjectiveCClass:
30+
case EncodeKind::ObjectiveCClass:
3131
return addObjCInterface(Name, Linkage);
32-
case SymbolKind::ObjectiveCClassEHType:
32+
case EncodeKind::ObjectiveCClassEHType:
3333
return addObjCInterface(Name, Linkage, /*HasEHType=*/true);
34-
case SymbolKind::ObjectiveCInstanceVariable: {
34+
case EncodeKind::ObjectiveCInstanceVariable: {
3535
auto [Super, IVar] = Name.split('.');
3636
// Attempt to find super class.
3737
ObjCContainerRecord *Container = findContainer(/*isIVar=*/false, Super);

llvm/lib/TextAPI/Symbol.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ LLVM_DUMP_METHOD void Symbol::dump(raw_ostream &OS) const {
2828
if (isThreadLocalValue())
2929
Result += "(tlv) ";
3030
switch (Kind) {
31-
case SymbolKind::GlobalSymbol:
31+
case EncodeKind::GlobalSymbol:
3232
Result += Name.str();
3333
break;
34-
case SymbolKind::ObjectiveCClass:
34+
case EncodeKind::ObjectiveCClass:
3535
Result += "(ObjC Class) " + Name.str();
3636
break;
37-
case SymbolKind::ObjectiveCClassEHType:
37+
case EncodeKind::ObjectiveCClassEHType:
3838
Result += "(ObjC Class EH) " + Name.str();
3939
break;
40-
case SymbolKind::ObjectiveCInstanceVariable:
40+
case EncodeKind::ObjectiveCInstanceVariable:
4141
Result += "(ObjC IVar) " + Name.str();
4242
break;
4343
}
@@ -75,27 +75,27 @@ bool Symbol::operator==(const Symbol &O) const {
7575
SimpleSymbol parseSymbol(StringRef SymName, const SymbolFlags Flags) {
7676
if (SymName.starts_with(ObjC1ClassNamePrefix))
7777
return {SymName.drop_front(ObjC1ClassNamePrefix.size()),
78-
SymbolKind::ObjectiveCClass};
78+
EncodeKind::ObjectiveCClass};
7979
if (SymName.starts_with(ObjC2ClassNamePrefix))
8080
return {SymName.drop_front(ObjC2ClassNamePrefix.size()),
81-
SymbolKind::ObjectiveCClass};
81+
EncodeKind::ObjectiveCClass};
8282
if (SymName.starts_with(ObjC2MetaClassNamePrefix))
8383
return {SymName.drop_front(ObjC2MetaClassNamePrefix.size()),
84-
SymbolKind::ObjectiveCClass};
84+
EncodeKind::ObjectiveCClass};
8585
if (SymName.starts_with(ObjC2EHTypePrefix)) {
8686
// When classes without ehtype are used in try/catch blocks
8787
// a weak-defined symbol is exported. In those cases, treat these as a
8888
// global instead.
8989
if ((Flags & SymbolFlags::WeakDefined) == SymbolFlags::WeakDefined)
90-
return {SymName, SymbolKind::GlobalSymbol};
90+
return {SymName, EncodeKind::GlobalSymbol};
9191
return {SymName.drop_front(ObjC2EHTypePrefix.size()),
92-
SymbolKind::ObjectiveCClassEHType};
92+
EncodeKind::ObjectiveCClassEHType};
9393
}
9494

9595
if (SymName.starts_with(ObjC2IVarPrefix))
9696
return {SymName.drop_front(ObjC2IVarPrefix.size()),
97-
SymbolKind::ObjectiveCInstanceVariable};
98-
return {SymName, SymbolKind::GlobalSymbol};
97+
EncodeKind::ObjectiveCInstanceVariable};
98+
return {SymName, EncodeKind::GlobalSymbol};
9999
}
100100

101101
} // end namespace MachO.

llvm/lib/TextAPI/SymbolSet.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
using namespace llvm;
1212
using namespace llvm::MachO;
1313

14-
Symbol *SymbolSet::addGlobalImpl(SymbolKind Kind, StringRef Name,
14+
Symbol *SymbolSet::addGlobalImpl(EncodeKind Kind, StringRef Name,
1515
SymbolFlags Flags) {
1616
Name = copyString(Name);
1717
auto Result = Symbols.try_emplace(SymbolsMapKey{Kind, Name}, nullptr);
@@ -21,13 +21,13 @@ Symbol *SymbolSet::addGlobalImpl(SymbolKind Kind, StringRef Name,
2121
return Result.first->second;
2222
}
2323

24-
Symbol *SymbolSet::addGlobal(SymbolKind Kind, StringRef Name, SymbolFlags Flags,
24+
Symbol *SymbolSet::addGlobal(EncodeKind Kind, StringRef Name, SymbolFlags Flags,
2525
const Target &Targ) {
2626
auto *Sym = addGlobalImpl(Kind, Name, Flags);
2727
Sym->addTarget(Targ);
2828
return Sym;
2929
}
3030

31-
const Symbol *SymbolSet::findSymbol(SymbolKind Kind, StringRef Name) const {
31+
const Symbol *SymbolSet::findSymbol(EncodeKind Kind, StringRef Name) const {
3232
return Symbols.lookup({Kind, Name});
3333
}

0 commit comments

Comments
 (0)