Skip to content

Commit 7f2388a

Browse files
committed
[TextAPI] Rename SymbolKind to EncodeKind (llvm#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 825a0aa commit 7f2388a

20 files changed

+308
-309
lines changed

lld/MachO/InputFiles.cpp

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

18651865
switch (symbol->getKind()) {
1866-
case SymbolKind::GlobalSymbol:
1867-
case SymbolKind::ObjectiveCClass:
1868-
case SymbolKind::ObjectiveCClassEHType:
1869-
case SymbolKind::ObjectiveCInstanceVariable:
1866+
case EncodeKind::GlobalSymbol:
1867+
case EncodeKind::ObjectiveCClass:
1868+
case EncodeKind::ObjectiveCClassEHType:
1869+
case EncodeKind::ObjectiveCInstanceVariable:
18701870
normalSymbols.push_back(symbol);
18711871
}
18721872
}
18731873

18741874
// TODO(compnerd) filter out symbols based on the target platform
18751875
for (const auto *symbol : normalSymbols) {
18761876
switch (symbol->getKind()) {
1877-
case SymbolKind::GlobalSymbol:
1877+
case EncodeKind::GlobalSymbol:
18781878
addSymbol(*symbol, symbol->getName());
18791879
break;
1880-
case SymbolKind::ObjectiveCClass:
1880+
case EncodeKind::ObjectiveCClass:
18811881
// XXX ld64 only creates these symbols when -ObjC is passed in. We may
18821882
// want to emulate that.
18831883
addSymbol(*symbol, objc::klass + symbol->getName());
18841884
addSymbol(*symbol, objc::metaclass + symbol->getName());
18851885
break;
1886-
case SymbolKind::ObjectiveCClassEHType:
1886+
case EncodeKind::ObjectiveCClassEHType:
18871887
addSymbol(*symbol, objc::ehtype + symbol->getName());
18881888
break;
1889-
case SymbolKind::ObjectiveCInstanceVariable:
1889+
case EncodeKind::ObjectiveCInstanceVariable:
18901890
addSymbol(*symbol, objc::ivar + symbol->getName());
18911891
break;
18921892
}

llvm/include/llvm/TextAPI/InterfaceFile.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -352,18 +352,17 @@ class InterfaceFile {
352352
///
353353
/// \param Kind The kind of global symbol to record.
354354
/// \param Name The name of the symbol.
355-
std::optional<const Symbol *> getSymbol(SymbolKind Kind,
355+
std::optional<const Symbol *> getSymbol(EncodeKind Kind,
356356
StringRef Name) const {
357357
if (auto *Sym = SymbolsSet->findSymbol(Kind, Name))
358358
return Sym;
359359
return std::nullopt;
360360
}
361361

362362
/// Add a symbol to the symbols list or extend an existing one.
363-
template <typename RangeT,
364-
typename ElT = typename std::remove_reference<
365-
decltype(*std::begin(std::declval<RangeT>()))>::type>
366-
void addSymbol(SymbolKind Kind, StringRef Name, RangeT &&Targets,
363+
template <typename RangeT, typename ElT = std::remove_reference_t<
364+
decltype(*std::begin(std::declval<RangeT>()))>>
365+
void addSymbol(EncodeKind Kind, StringRef Name, RangeT &&Targets,
367366
SymbolFlags Flags = SymbolFlags::None) {
368367
SymbolsSet->addGlobal(Kind, Name, Flags, Targets);
369368
}
@@ -374,7 +373,7 @@ class InterfaceFile {
374373
/// \param Name The name of the symbol.
375374
/// \param Targets The list of targets the symbol is defined in.
376375
/// \param Flags The properties the symbol holds.
377-
void addSymbol(SymbolKind Kind, StringRef Name, TargetList &&Targets,
376+
void addSymbol(EncodeKind Kind, StringRef Name, TargetList &&Targets,
378377
SymbolFlags Flags = SymbolFlags::None) {
379378
SymbolsSet->addGlobal(Kind, Name, Flags, Targets);
380379
}
@@ -385,7 +384,7 @@ class InterfaceFile {
385384
/// \param Name The name of the symbol.
386385
/// \param Target The target the symbol is defined in.
387386
/// \param Flags The properties the symbol holds.
388-
void addSymbol(SymbolKind Kind, StringRef Name, Target &Target,
387+
void addSymbol(EncodeKind Kind, StringRef Name, Target &Target,
389388
SymbolFlags Flags = SymbolFlags::None) {
390389
SymbolsSet->addGlobal(Kind, Name, Flags, Target);
391390
}

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 SymName The name of symbol.
176177
/// \param Flags The flags pre-determined for the symbol.

llvm/include/llvm/TextAPI/SymbolSet.h

Lines changed: 12 additions & 13 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,28 +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

98-
template <typename RangeT,
99-
typename ElT = typename std::remove_reference<
100-
decltype(*std::begin(std::declval<RangeT>()))>::type>
101-
Symbol *addGlobal(SymbolKind Kind, StringRef Name, SymbolFlags Flags,
98+
template <typename RangeT, typename ElT = std::remove_reference_t<
99+
decltype(*std::begin(std::declval<RangeT>()))>>
100+
Symbol *addGlobal(EncodeKind Kind, StringRef Name, SymbolFlags Flags,
102101
RangeT &&Targets) {
103102
auto *Global = addGlobalImpl(Kind, Name, Flags);
104103
for (const auto &Targ : Targets)
105104
Global->addTarget(Targ);
106-
if (Kind == SymbolKind::ObjectiveCClassEHType)
107-
addGlobal(SymbolKind::ObjectiveCClass, Name, Flags, Targets);
105+
if (Kind == EncodeKind::ObjectiveCClassEHType)
106+
addGlobal(EncodeKind::ObjectiveCClass, Name, Flags, Targets);
108107
return Global;
109108
}
110109

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

113112
struct const_symbol_iterator
114113
: 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: 14 additions & 14 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.startswith(ObjC1ClassNamePrefix))
7777
return {SymName.drop_front(ObjC1ClassNamePrefix.size()),
78-
SymbolKind::ObjectiveCClass};
79-
if (SymName.startswith(ObjC2ClassNamePrefix))
78+
EncodeKind::ObjectiveCClass};
79+
if (SymName.starts_with(ObjC2ClassNamePrefix))
8080
return {SymName.drop_front(ObjC2ClassNamePrefix.size()),
81-
SymbolKind::ObjectiveCClass};
82-
if (SymName.startswith(ObjC2MetaClassNamePrefix))
81+
EncodeKind::ObjectiveCClass};
82+
if (SymName.starts_with(ObjC2MetaClassNamePrefix))
8383
return {SymName.drop_front(ObjC2MetaClassNamePrefix.size()),
84-
SymbolKind::ObjectiveCClass};
85-
if (SymName.startswith(ObjC2EHTypePrefix)) {
84+
EncodeKind::ObjectiveCClass};
85+
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.startswith(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)