Skip to content

Commit c7738cc

Browse files
committed
[lldb] Don't search the metadata map three times when retrieving metadata
HasMetadata checks if our metadata map knows the given object. GetMetadata also does this check and then does another search to actually retrieve the value. This can all just be one lookup.
1 parent c0a3ab3 commit c7738cc

File tree

3 files changed

+4
-8
lines changed

3 files changed

+4
-8
lines changed

lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ class ClangExternalASTSourceCommon : public clang::ExternalASTSource {
128128

129129
ClangASTMetadata *GetMetadata(const void *object);
130130
void SetMetadata(const void *object, ClangASTMetadata &metadata);
131-
bool HasMetadata(const void *object);
132131

133132
static ClangExternalASTSourceCommon *Lookup(clang::ExternalASTSource *source);
134133

lldb/source/Symbol/ClangASTContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2419,7 +2419,7 @@ ClangASTMetadata *ClangASTContext::GetMetadata(clang::ASTContext *ast,
24192419
ClangExternalASTSourceCommon *external_source =
24202420
ClangExternalASTSourceCommon::Lookup(ast->getExternalSource());
24212421

2422-
if (external_source && external_source->HasMetadata(object))
2422+
if (external_source)
24232423
return external_source->GetMetadata(object);
24242424
else
24252425
return nullptr;

lldb/source/Symbol/ClangExternalASTSourceCommon.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ ClangExternalASTSourceCommon::~ClangExternalASTSourceCommon() {
5353

5454
ClangASTMetadata *
5555
ClangExternalASTSourceCommon::GetMetadata(const void *object) {
56-
if (HasMetadata(object))
57-
return &m_metadata[object];
56+
auto It = m_metadata.find(object);
57+
if (It != m_metadata.end())
58+
return &It->second;
5859
else
5960
return nullptr;
6061
}
@@ -64,10 +65,6 @@ void ClangExternalASTSourceCommon::SetMetadata(const void *object,
6465
m_metadata[object] = metadata;
6566
}
6667

67-
bool ClangExternalASTSourceCommon::HasMetadata(const void *object) {
68-
return m_metadata.find(object) != m_metadata.end();
69-
}
70-
7168
void ClangASTMetadata::Dump(Stream *s) {
7269
lldb::user_id_t uid = GetUserID();
7370

0 commit comments

Comments
 (0)