[llvm-branch-commits] [lldb] [lldb] Move dynamic type cache to common ABI runtime (PR #212014)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sat Jul 25 04:21:24 PDT 2026
https://github.com/Nerixyz updated https://github.com/llvm/llvm-project/pull/212014
>From d2eeec4f42344b9620fa4aa6fe49f3c9c4302505 Mon Sep 17 00:00:00 2001
From: Nerixyz <nerixdev at outlook.de>
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
More information about the llvm-branch-commits
mailing list