[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