[Lldb-commits] [lldb] [lldb] Add memory region info cache to Process (PR #206208)
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 30 09:51:22 PDT 2026
================
@@ -0,0 +1,71 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Target/MemoryRegionInfoCache.h"
+#include "lldb/Target/MemoryRegionInfo.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+void MemoryRegionInfoCache::Clear() {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+ m_region_infos.Clear();
+ m_is_sorted = true;
+}
+
+void MemoryRegionInfoCache::EraseRange(addr_t load_addr, size_t size) {
+ std::lock_guard<std::recursive_mutex> guard(m_mutex);
+
+ // If load_addr+size would overflow, do nothing.
+ // Likely this is an LLDB_INVALID_ADDRESS plus something.
+ uint64_t max_minus_addr = std::numeric_limits<addr_t>::max() - load_addr;
+ if (size > max_minus_addr)
+ return;
+
+ if (!m_is_sorted)
+ m_region_infos.Sort();
----------------
jasonmolenda wrote:
I was thinking - we're about to remove an element and invalid the sorting, but (1) we could early-return, and (2) even after we've removed an entry we're still in correct sort order.
https://github.com/llvm/llvm-project/pull/206208
More information about the lldb-commits
mailing list