tatyana-krasnukha created this revision.
tatyana-krasnukha added a reviewer: clayborg.
tatyana-krasnukha added a project: LLDB.
Herald added a subscriber: lldb-commits.

Moved from D55472 <https://reviews.llvm.org/D55472>


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D55841

Files:
  
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
  
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
  C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h


Index: 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
===================================================================
--- 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
+++ 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
@@ -78,6 +78,9 @@
   Status GetMemoryRegionInfo(lldb::addr_t load_addr,
                              MemoryRegionInfo &range_info) override;
 
+  Status GetMemoryRegions(
+      lldb_private::MemoryRegionInfos &region_list) override;
+
   bool GetProcessInfo(ProcessInstanceInfo &info) override;
 
   Status WillResume() override {
Index: 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
===================================================================
--- 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
+++ 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
@@ -288,6 +288,12 @@
   return Status();
 }
 
+Status ProcessMinidump::GetMemoryRegions(
+    lldb_private::MemoryRegionInfos &region_list) {
+  region_list = m_minidump_parser.GetMemoryRegions();
+  return Status();
+}
+
 void ProcessMinidump::Clear() { Process::m_thread_list.Clear(); }
 
 bool ProcessMinidump::UpdateThreadList(ThreadList &old_thread_list,
Index: 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
===================================================================
--- 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
+++ 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
@@ -242,6 +242,8 @@
     return {};
 
   std::vector<const MinidumpMemoryInfo *> result;
+  result.reserve(header->num_of_entries);
+
   for (uint64_t i = 0; i < header->num_of_entries; ++i) {
     result.push_back(reinterpret_cast<const MinidumpMemoryInfo *>(
         data.data() + i * header->size_of_entry));
Index: 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
===================================================================
--- 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
+++ 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
@@ -87,6 +87,8 @@
 
   MemoryRegionInfo GetMemoryRegionInfo(lldb::addr_t load_addr);
 
+  const std::vector<MemoryRegionInfo> &GetMemoryRegions();
+
   // Perform consistency checks and initialize internal data structures
   Status Initialize();
 
Index: 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
===================================================================
--- 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
+++ 
C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
@@ -537,6 +537,12 @@
 
 MemoryRegionInfo
 MinidumpParser::GetMemoryRegionInfo(lldb::addr_t load_addr) {
+  if (!m_parsed_regions)
+    GetMemoryRegions();
+  return FindMemoryRegion(load_addr);
+}
+
+const std::vector<MemoryRegionInfo> &MinidumpParser::GetMemoryRegions() {
   if (!m_parsed_regions) {
     m_parsed_regions = true;
     // We haven't cached our memory regions yet we will create the region cache
@@ -552,7 +558,7 @@
           CreateRegionsCacheFromMemory64List(*this, m_regions);
     std::sort(m_regions.begin(), m_regions.end());
   }
-  return FindMemoryRegion(load_addr);
+  return m_regions;
 }
 
 Status MinidumpParser::Initialize() {


Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.h
@@ -78,6 +78,9 @@
   Status GetMemoryRegionInfo(lldb::addr_t load_addr,
                              MemoryRegionInfo &range_info) override;
 
+  Status GetMemoryRegions(
+      lldb_private::MemoryRegionInfos &region_list) override;
+
   bool GetProcessInfo(ProcessInstanceInfo &info) override;
 
   Status WillResume() override {
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
@@ -288,6 +288,12 @@
   return Status();
 }
 
+Status ProcessMinidump::GetMemoryRegions(
+    lldb_private::MemoryRegionInfos &region_list) {
+  region_list = m_minidump_parser.GetMemoryRegions();
+  return Status();
+}
+
 void ProcessMinidump::Clear() { Process::m_thread_list.Clear(); }
 
 bool ProcessMinidump::UpdateThreadList(ThreadList &old_thread_list,
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
@@ -242,6 +242,8 @@
     return {};
 
   std::vector<const MinidumpMemoryInfo *> result;
+  result.reserve(header->num_of_entries);
+
   for (uint64_t i = 0; i < header->num_of_entries; ++i) {
     result.push_back(reinterpret_cast<const MinidumpMemoryInfo *>(
         data.data() + i * header->size_of_entry));
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.h
@@ -87,6 +87,8 @@
 
   MemoryRegionInfo GetMemoryRegionInfo(lldb::addr_t load_addr);
 
+  const std::vector<MemoryRegionInfo> &GetMemoryRegions();
+
   // Perform consistency checks and initialize internal data structures
   Status Initialize();
 
Index: C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
===================================================================
--- C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
+++ C:/Repos/Svn/llvm/tools/lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
@@ -537,6 +537,12 @@
 
 MemoryRegionInfo
 MinidumpParser::GetMemoryRegionInfo(lldb::addr_t load_addr) {
+  if (!m_parsed_regions)
+    GetMemoryRegions();
+  return FindMemoryRegion(load_addr);
+}
+
+const std::vector<MemoryRegionInfo> &MinidumpParser::GetMemoryRegions() {
   if (!m_parsed_regions) {
     m_parsed_regions = true;
     // We haven't cached our memory regions yet we will create the region cache
@@ -552,7 +558,7 @@
           CreateRegionsCacheFromMemory64List(*this, m_regions);
     std::sort(m_regions.begin(), m_regions.end());
   }
-  return FindMemoryRegion(load_addr);
+  return m_regions;
 }
 
 Status MinidumpParser::Initialize() {
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to