diff options
Diffstat (limited to 'lldb/source/Core/ModuleList.cpp')
-rw-r--r-- | lldb/source/Core/ModuleList.cpp | 28 |
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 ( |