[Lldb-commits] [lldb] 2526f1c - [lldb] Use Guarded in CPPLanguageRuntime (#220212)
via lldb-commits
lldb-commits at lists.llvm.org
Thu Sep 17 05:33:29 PDT 2026
Author: Raphael Isemann
Date: 2026-09-17T13:33:24+01:00
New Revision: 2526f1ca2d81565771ab9c1e2dce44d013d7cc41
URL: https://github.com/llvm/llvm-project/commit/2526f1ca2d81565771ab9c1e2dce44d013d7cc41
DIFF: https://github.com/llvm/llvm-project/commit/2526f1ca2d81565771ab9c1e2dce44d013d7cc41.diff
LOG: [lldb] Use Guarded in CPPLanguageRuntime (#220212)
Use Guarded to make sure m_vtable_info_map cannot be accesses without
locking the respective lock.
Added:
Modified:
lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp
lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h
Removed:
################################################################################
diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp
index b3e77db6d44c0..0a82d59a215ca 100644
--- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp
@@ -808,9 +808,9 @@ CPPLanguageRuntime::GetVTableInfoEntry(ValueObject &in_value, bool check_type) {
// Check our cache first to see if we already have this info
{
- std::lock_guard<std::mutex> locker(m_vtable_mutex);
- auto pos = m_vtable_info_map.find(vtable_addr);
- if (pos != m_vtable_info_map.end())
+ auto vtable_info_map = m_vtable_info_map.Lock();
+ auto pos = vtable_info_map->find(vtable_addr);
+ if (pos != vtable_info_map->end())
return pos->second;
}
@@ -832,8 +832,7 @@ CPPLanguageRuntime::GetVTableInfoEntry(ValueObject &in_value, bool check_type) {
/*info=*/VTableInfo{vtable_addr, symbol},
/*runtime=*/runtime.get(),
};
- std::lock_guard<std::mutex> locker(m_vtable_mutex);
- m_vtable_info_map[vtable_addr] = entry;
+ (*m_vtable_info_map.Lock())[vtable_addr] = entry;
return entry;
}
}
diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h
index 823a968cbad8c..5bc21448ce306 100644
--- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h
+++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h
@@ -16,6 +16,7 @@
#include "CommonABIRuntime.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Target/LanguageRuntime.h"
+#include "lldb/Utility/Locked.h"
#include "lldb/lldb-private.h"
namespace lldb_private {
@@ -153,8 +154,8 @@ class CPPLanguageRuntime : public LanguageRuntime {
llvm::Expected<VTableInfoEntry> GetVTableInfoEntry(ValueObject &in_value,
bool check_type);
- std::map<Address, VTableInfoEntry> m_vtable_info_map;
- std::mutex m_vtable_mutex;
+ using VTableInfoMap = std::map<Address, VTableInfoEntry>;
+ Guarded<VTableInfoMap, std::mutex> m_vtable_info_map;
};
} // namespace lldb_private
More information about the lldb-commits
mailing list