summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/ModuleList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Core/ModuleList.cpp')
-rw-r--r--lldb/source/Core/ModuleList.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp
index 7a4748338e9..cf83d4b4476 100644
--- a/lldb/source/Core/ModuleList.cpp
+++ b/lldb/source/Core/ModuleList.cpp
@@ -108,6 +108,28 @@ ModuleList::Remove (ModuleSP &module_sp)
return false;
}
+
+size_t
+ModuleList::RemoveOrphans ()
+{
+ Mutex::Locker locker(m_modules_mutex);
+ collection::reverse_iterator pos = m_modules.rbegin();
+ size_t remove_count = 0;
+ while (pos != m_modules.rend())
+ {
+ if (pos->unique())
+ {
+ pos = m_modules.erase (pos);
+ ++remove_count;
+ }
+ else
+ {
+ ++pos;
+ }
+ }
+ return remove_count;
+}
+
size_t
ModuleList::Remove (ModuleList &module_list)
{
@@ -680,6 +702,12 @@ ModuleList::FindSharedModules
return shared_module_list.FindModules (&in_file_spec, &arch, uuid_ptr, object_name_ptr, matching_module_list);
}
+uint32_t
+ModuleList::RemoveOrphanSharedModules ()
+{
+ return GetSharedModuleList ().RemoveOrphans();
+}
+
Error
ModuleList::GetSharedModule
(
OpenPOWER on IntegriCloud