Skip to content

Commit 662aa3c

Browse files
committed
[lldb] Acquire the map lock after deriving the lookup key
The computation of the key may itself does DWARF lookups which may acquire additional locks through callbacks into TypeSystem. rdar://139841554 (cherry picked from commit a657eef)
1 parent 126659b commit 662aa3c

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,7 +1911,6 @@ SwiftASTContext *TypeSystemSwiftTypeRefForExpressions::GetSwiftASTContext(
19111911
SwiftASTContext *TypeSystemSwiftTypeRef::GetSwiftASTContextOrNull(
19121912
const SymbolContext &sc) const {
19131913
std::lock_guard<std::mutex> guard(m_swift_ast_context_lock);
1914-
19151914
const char *key = nullptr;
19161915
auto it = m_swift_ast_context_map.find(key);
19171916
if (it != m_swift_ast_context_map.end())
@@ -1921,9 +1920,9 @@ SwiftASTContext *TypeSystemSwiftTypeRef::GetSwiftASTContextOrNull(
19211920

19221921
SwiftASTContext *TypeSystemSwiftTypeRefForExpressions::GetSwiftASTContextOrNull(
19231922
const SymbolContext &sc) const {
1924-
std::lock_guard<std::mutex> guard(m_swift_ast_context_lock);
1925-
19261923
const char *key = DeriveKeyFor(sc);
1924+
1925+
std::lock_guard<std::mutex> guard(m_swift_ast_context_lock);
19271926
auto it = m_swift_ast_context_map.find(key);
19281927
if (it != m_swift_ast_context_map.end())
19291928
return llvm::cast_or_null<SwiftASTContext>(it->second.typesystem.get());

0 commit comments

Comments
 (0)