summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
authorRaphael Isemann <teemperor@gmail.com>2019-12-11 14:50:34 +0100
committerRaphael Isemann <teemperor@gmail.com>2019-12-11 15:08:10 +0100
commitc7738cca7efda9d1a78569b69ba4ac735c0f2212 (patch)
tree402a9316a11340d6662d8a5a5019f721288deca0 /lldb/source
parentc0a3ab365514e126b694e009503d537d0e67eb01 (diff)
downloadbcm5719-llvm-c7738cca7efda9d1a78569b69ba4ac735c0f2212.tar.gz
bcm5719-llvm-c7738cca7efda9d1a78569b69ba4ac735c0f2212.zip
[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.
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Symbol/ClangASTContext.cpp2
-rw-r--r--lldb/source/Symbol/ClangExternalASTSourceCommon.cpp9
2 files changed, 4 insertions, 7 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index 8c5b0cae34b..e7237a39a9c 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -2419,7 +2419,7 @@ ClangASTMetadata *ClangASTContext::GetMetadata(clang::ASTContext *ast,
ClangExternalASTSourceCommon *external_source =
ClangExternalASTSourceCommon::Lookup(ast->getExternalSource());
- if (external_source && external_source->HasMetadata(object))
+ if (external_source)
return external_source->GetMetadata(object);
else
return nullptr;
diff --git a/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp b/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp
index 9c58969dc46..b60b3791aae 100644
--- a/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp
+++ b/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp
@@ -53,8 +53,9 @@ ClangExternalASTSourceCommon::~ClangExternalASTSourceCommon() {
ClangASTMetadata *
ClangExternalASTSourceCommon::GetMetadata(const void *object) {
- if (HasMetadata(object))
- return &m_metadata[object];
+ auto It = m_metadata.find(object);
+ if (It != m_metadata.end())
+ return &It->second;
else
return nullptr;
}
@@ -64,10 +65,6 @@ void ClangExternalASTSourceCommon::SetMetadata(const void *object,
m_metadata[object] = metadata;
}
-bool ClangExternalASTSourceCommon::HasMetadata(const void *object) {
- return m_metadata.find(object) != m_metadata.end();
-}
-
void ClangASTMetadata::Dump(Stream *s) {
lldb::user_id_t uid = GetUserID();
OpenPOWER on IntegriCloud