https://github.com/Nerixyz updated https://github.com/llvm/llvm-project/pull/212014
>From d2eeec4f42344b9620fa4aa6fe49f3c9c4302505 Mon Sep 17 00:00:00 2001 From: Nerixyz <[email protected]> Date: Wed, 1 Jul 2026 16:44:45 +0200 Subject: [PATCH] [lldb] Move dynamic type cache to common ABI runtime --- .../CPlusPlus/CommonABIRuntime.cpp | 16 ++++++++++++++++ .../LanguageRuntime/CPlusPlus/CommonABIRuntime.h | 11 +++++++++++ .../CPlusPlus/ItaniumABIRuntime.cpp | 16 ---------------- .../CPlusPlus/ItaniumABIRuntime.h | 9 --------- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.cpp index 91db30ddcc1b4..a8ed0e810b700 100644 --- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.cpp +++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.cpp @@ -95,3 +95,19 @@ CommonABIRuntime::LookupTypeByName(llvm::StringRef type_name, type_name); return {}; } + +TypeAndOrName +CommonABIRuntime::GetDynamicTypeInfo(const lldb_private::Address &vtable_addr) { + std::lock_guard<std::mutex> locker(m_mutex); + DynamicTypeCache::const_iterator pos = m_dynamic_type_map.find(vtable_addr); + if (pos == m_dynamic_type_map.end()) + return TypeAndOrName(); + + return pos->second; +} + +void CommonABIRuntime::SetDynamicTypeInfo( + const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info) { + std::lock_guard<std::mutex> locker(m_mutex); + m_dynamic_type_map[vtable_addr] = type_info; +} diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.h b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.h index 8af61ec2c2c6d..7fc8248c3e192 100644 --- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.h +++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CommonABIRuntime.h @@ -11,6 +11,7 @@ #include "lldb/Target/Process.h" +#include <map> #include <mutex> namespace lldb_private { @@ -25,9 +26,19 @@ class CommonABIRuntime { lldb::TypeSP LookupTypeByName(llvm::StringRef type_name, lldb::ModuleSP preferred_module) const; + TypeAndOrName GetDynamicTypeInfo(const lldb_private::Address &vtable_addr); + + void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr, + const TypeAndOrName &type_info); + protected: Process *m_process; std::mutex m_mutex; + +private: + using DynamicTypeCache = std::map<Address, TypeAndOrName>; + + DynamicTypeCache m_dynamic_type_map; }; } // namespace lldb_private diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.cpp index e139ee1623f4b..db1c2a62681d3 100644 --- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.cpp +++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.cpp @@ -251,19 +251,3 @@ ItaniumABIRuntime::GetExceptionObjectForThread(ThreadSP thread_sp) { return exception; } - -TypeAndOrName ItaniumABIRuntime::GetDynamicTypeInfo( - const lldb_private::Address &vtable_addr) { - std::lock_guard<std::mutex> locker(m_mutex); - DynamicTypeCache::const_iterator pos = m_dynamic_type_map.find(vtable_addr); - if (pos == m_dynamic_type_map.end()) - return TypeAndOrName(); - else - return pos->second; -} - -void ItaniumABIRuntime::SetDynamicTypeInfo( - const lldb_private::Address &vtable_addr, const TypeAndOrName &type_info) { - std::lock_guard<std::mutex> locker(m_mutex); - m_dynamic_type_map[vtable_addr] = type_info; -} diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.h b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.h index db2dae6a2cfa9..7c4cf019ee975 100644 --- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.h +++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABIRuntime.h @@ -42,15 +42,6 @@ class ItaniumABIRuntime : public CommonABIRuntime { private: TypeAndOrName GetTypeInfo(ValueObject &in_value, const LanguageRuntime::VTableInfo &vtable_info); - - TypeAndOrName GetDynamicTypeInfo(const lldb_private::Address &vtable_addr); - - void SetDynamicTypeInfo(const lldb_private::Address &vtable_addr, - const TypeAndOrName &type_info); - - using DynamicTypeCache = std::map<Address, TypeAndOrName>; - - DynamicTypeCache m_dynamic_type_map; }; } // namespace lldb_private _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
