Skip to content

Commit 9fc0985

Browse files
committed
[AST] Stop using side-table for local discriminators
1 parent dc76149 commit 9fc0985

File tree

4 files changed

+13
-24
lines changed

4 files changed

+13
-24
lines changed

include/swift/AST/Decl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2150,6 +2150,7 @@ class ValueDecl : public Decl {
21502150
DeclName Name;
21512151
SourceLoc NameLoc;
21522152
llvm::PointerIntPair<Type, 3, OptionalEnum<AccessLevel>> TypeAndAccess;
2153+
unsigned LocalDiscriminator = 0;
21532154

21542155
private:
21552156
bool isUsableFromInline() const;

lib/AST/ASTContext.cpp

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,6 @@ FOR_KNOWN_FOUNDATION_TYPES(CACHE_FOUNDATION_DECL)
226226
/// \brief Map from Swift declarations to brief comments.
227227
llvm::DenseMap<const Decl *, StringRef> BriefComments;
228228

229-
/// \brief Map from local declarations to their discriminators.
230-
/// Missing entries implicitly have value 0.
231-
llvm::DenseMap<const ValueDecl *, unsigned> LocalDiscriminators;
232-
233229
/// \brief Map from declarations to foreign error conventions.
234230
/// This applies to both actual imported functions and to @objc functions.
235231
llvm::DenseMap<const AbstractFunctionDecl *,
@@ -1796,24 +1792,6 @@ void ASTContext::setBriefComment(const Decl *D, StringRef Comment) {
17961792
getImpl().BriefComments[D] = Comment;
17971793
}
17981794

1799-
unsigned ValueDecl::getLocalDiscriminator() const {
1800-
assert(getDeclContext()->isLocalContext());
1801-
auto &discriminators = getASTContext().getImpl().LocalDiscriminators;
1802-
auto it = discriminators.find(this);
1803-
if (it == discriminators.end())
1804-
return 0;
1805-
return it->second;
1806-
}
1807-
1808-
void ValueDecl::setLocalDiscriminator(unsigned index) {
1809-
assert(getDeclContext()->isLocalContext());
1810-
if (!index) {
1811-
assert(!getASTContext().getImpl().LocalDiscriminators.count(this));
1812-
return;
1813-
}
1814-
getASTContext().getImpl().LocalDiscriminators.insert({this, index});
1815-
}
1816-
18171795
NormalProtocolConformance *
18181796
ASTContext::getBehaviorConformance(Type conformingType,
18191797
ProtocolDecl *protocol,
@@ -2034,7 +2012,6 @@ size_t ASTContext::getTotalMemory() const {
20342012
llvm::capacity_in_bytes(getImpl().ModuleLoaders) +
20352013
llvm::capacity_in_bytes(getImpl().RawComments) +
20362014
llvm::capacity_in_bytes(getImpl().BriefComments) +
2037-
llvm::capacity_in_bytes(getImpl().LocalDiscriminators) +
20382015
llvm::capacity_in_bytes(getImpl().ModuleTypes) +
20392016
llvm::capacity_in_bytes(getImpl().GenericParamTypes) +
20402017
// getImpl().GenericFunctionTypes ?

lib/AST/Decl.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,6 +1680,16 @@ bool ValueDecl::needsCapture() const {
16801680
return !isa<TypeDecl>(this);
16811681
}
16821682

1683+
unsigned ValueDecl::getLocalDiscriminator() const {
1684+
return LocalDiscriminator;
1685+
}
1686+
1687+
void ValueDecl::setLocalDiscriminator(unsigned index) {
1688+
assert(getDeclContext()->isLocalContext());
1689+
assert(LocalDiscriminator == 0 && "LocalDiscriminator is set multiple times");
1690+
LocalDiscriminator = index;
1691+
}
1692+
16831693
ValueDecl *ValueDecl::getOverriddenDecl() const {
16841694
if (auto fd = dyn_cast<FuncDecl>(this))
16851695
return fd->getOverriddenDecl();

lib/Serialization/ModuleFile.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2024,7 +2024,8 @@ ModuleFile::getLocalTypeDecls(SmallVectorImpl<TypeDecl *> &results) {
20242024
for (auto entry : LocalTypeDecls->data()) {
20252025
auto DeclID = entry.first;
20262026
auto TD = cast<TypeDecl>(getDecl(DeclID));
2027-
TD->setLocalDiscriminator(entry.second);
2027+
assert(entry.second == TD->getLocalDiscriminator());
2028+
// TD->setLocalDiscriminator(entry.second);
20282029
results.push_back(TD);
20292030
}
20302031
}

0 commit comments

Comments
 (0)