[Lldb-commits] [lldb] [lldb] Use Guarded in MemoryRegionInfoCache (PR #219425)
Raphael Isemann via lldb-commits
lldb-commits at lists.llvm.org
Mon Oct 19 04:03:07 PDT 2026
https://github.com/Teemperor updated https://github.com/llvm/llvm-project/pull/219425
>From 59afbb41a976f6644173545f6a03a057ce4faf86 Mon Sep 17 00:00:00 2001
From: Raphael Isemann <rise at apple.com>
Date: Thu, 27 Aug 2026 15:46:17 +0100
Subject: [PATCH] [lldb] Use Guarded in MemoryRegionInfoCache
This replaces the mutex + variable pair with a `Guarded` variable
that enforces the locking.
---
.../include/lldb/Target/MemoryRegionInfoCache.h | 5 +++--
lldb/source/Target/MemoryRegionInfoCache.cpp | 17 ++++++-----------
2 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/lldb/include/lldb/Target/MemoryRegionInfoCache.h b/lldb/include/lldb/Target/MemoryRegionInfoCache.h
index 5117f1f598e55..7daea43671646 100644
--- a/lldb/include/lldb/Target/MemoryRegionInfoCache.h
+++ b/lldb/include/lldb/Target/MemoryRegionInfoCache.h
@@ -10,6 +10,7 @@
#define LLDB_TARGET_MEMORYREGIONINFOCACHE_H
#include "lldb/Target/MemoryRegionInfo.h"
+#include "lldb/Utility/Locked.h"
#include <map>
#include <mutex>
@@ -34,8 +35,8 @@ class MemoryRegionInfoCache {
size_t GetSize();
private:
- std::map<lldb::addr_t, MemoryRegionInfo> m_region_infos;
- std::mutex m_mutex;
+ Guarded<std::map<lldb::addr_t, MemoryRegionInfo>, std::mutex>
+ m_region_infos;
};
} // namespace lldb_private
diff --git a/lldb/source/Target/MemoryRegionInfoCache.cpp b/lldb/source/Target/MemoryRegionInfoCache.cpp
index 47694b3ad58fc..e84e56fbcc71e 100644
--- a/lldb/source/Target/MemoryRegionInfoCache.cpp
+++ b/lldb/source/Target/MemoryRegionInfoCache.cpp
@@ -12,21 +12,17 @@
using namespace lldb;
using namespace lldb_private;
-void MemoryRegionInfoCache::Clear() {
- std::lock_guard<std::mutex> guard(m_mutex);
- m_region_infos.clear();
-}
+void MemoryRegionInfoCache::Clear() { m_region_infos.Lock()->clear(); }
size_t MemoryRegionInfoCache::GetSize() {
- std::lock_guard<std::mutex> guard(m_mutex);
- return m_region_infos.size();
+ return m_region_infos.Lock()->size();
}
std::optional<MemoryRegionInfo>
MemoryRegionInfoCache::GetMemoryRegion(addr_t load_addr) {
- std::lock_guard<std::mutex> guard(m_mutex);
- auto it = m_region_infos.upper_bound(load_addr);
- if (it == m_region_infos.begin())
+ auto region_infos = m_region_infos.Lock();
+ auto it = region_infos->upper_bound(load_addr);
+ if (it == region_infos->begin())
return std::nullopt;
--it;
if (load_addr < it->second.GetRange().GetRangeEnd())
@@ -36,6 +32,5 @@ MemoryRegionInfoCache::GetMemoryRegion(addr_t load_addr) {
}
void MemoryRegionInfoCache::AddRegion(const MemoryRegionInfo &ri) {
- std::lock_guard<std::mutex> guard(m_mutex);
- m_region_infos.insert_or_assign(ri.GetRange().GetRangeBase(), ri);
+ m_region_infos.Lock()->insert_or_assign(ri.GetRange().GetRangeBase(), ri);
}
More information about the lldb-commits
mailing list