[Lldb-commits] [lldb] r255603 - Fix a bug where language categories would hold on to their caches even after changes
Enrico Granata via lldb-commits
lldb-commits at lists.llvm.org
Mon Dec 14 18:20:49 PST 2015
Author: enrico
Date: Mon Dec 14 20:20:48 2015
New Revision: 255603
URL: http://llvm.org/viewvc/llvm-project?rev=255603&view=rev
Log:
Fix a bug where language categories would hold on to their caches even after changes
Modified:
lldb/trunk/include/lldb/DataFormatters/FormatManager.h
lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h
lldb/trunk/source/DataFormatters/FormatManager.cpp
lldb/trunk/source/DataFormatters/LanguageCategory.cpp
Modified: lldb/trunk/include/lldb/DataFormatters/FormatManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/FormatManager.h?rev=255603&r1=255602&r2=255603&view=diff
==============================================================================
--- lldb/trunk/include/lldb/DataFormatters/FormatManager.h (original)
+++ lldb/trunk/include/lldb/DataFormatters/FormatManager.h Mon Dec 14 20:20:48 2015
@@ -238,11 +238,7 @@ public:
ShouldPrintAsOneLiner (ValueObject& valobj);
void
- Changed () override
- {
- ++m_last_revision;
- m_format_cache.Clear ();
- }
+ Changed () override;
uint32_t
GetCurrentRevision () override
@@ -290,13 +286,13 @@ private:
bool did_strip_ref,
bool did_strip_typedef,
bool root_level = false);
-
+
+ std::atomic<uint32_t> m_last_revision;
FormatCache m_format_cache;
+ Mutex m_language_categories_mutex;
+ LanguageCategories m_language_categories_map;
NamedSummariesMap m_named_summaries_map;
- std::atomic<uint32_t> m_last_revision;
TypeCategoryMap m_categories_map;
- LanguageCategories m_language_categories_map;
- Mutex m_language_categories_mutex;
ConstString m_default_category_name;
ConstString m_system_category_name;
Modified: lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h?rev=255603&r1=255602&r2=255603&view=diff
==============================================================================
--- lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h (original)
+++ lldb/trunk/include/lldb/DataFormatters/LanguageCategory.h Mon Dec 14 20:20:48 2015
@@ -69,6 +69,9 @@ public:
lldb::TypeCategoryImplSP
GetCategory () const;
+ FormatCache&
+ GetFormatCache ();
+
void
Enable ();
Modified: lldb/trunk/source/DataFormatters/FormatManager.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/FormatManager.cpp?rev=255603&r1=255602&r2=255603&view=diff
==============================================================================
--- lldb/trunk/source/DataFormatters/FormatManager.cpp (original)
+++ lldb/trunk/source/DataFormatters/FormatManager.cpp Mon Dec 14 20:20:48 2015
@@ -123,6 +123,19 @@ GetFormatFromFormatName (const char *for
return false;
}
+void
+FormatManager::Changed ()
+{
+ ++m_last_revision;
+ m_format_cache.Clear ();
+ Mutex::Locker lang_locker(m_language_categories_mutex);
+ for (auto& iter : m_language_categories_map)
+ {
+ if (iter.second)
+ iter.second->GetFormatCache().Clear();
+ }
+}
+
bool
FormatManager::GetFormatFromCString (const char *format_cstr,
bool partial_match_ok,
@@ -1043,12 +1056,12 @@ FormatManager::GetHardcodedValidator (Fo
}
FormatManager::FormatManager() :
+ m_last_revision(0),
m_format_cache(),
+ m_language_categories_mutex(Mutex::eMutexTypeRecursive),
+ m_language_categories_map(),
m_named_summaries_map(this),
- m_last_revision(0),
m_categories_map(this),
- m_language_categories_map(),
- m_language_categories_mutex(Mutex::eMutexTypeRecursive),
m_default_category_name(ConstString("default")),
m_system_category_name(ConstString("system")),
m_vectortypes_category_name(ConstString("VectorTypes"))
@@ -1063,7 +1076,6 @@ FormatManager::FormatManager() :
void
FormatManager::LoadSystemFormatters()
{
-
TypeSummaryImpl::Flags string_flags;
string_flags.SetCascades(true)
.SetSkipPointers(true)
Modified: lldb/trunk/source/DataFormatters/LanguageCategory.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/LanguageCategory.cpp?rev=255603&r1=255602&r2=255603&view=diff
==============================================================================
--- lldb/trunk/source/DataFormatters/LanguageCategory.cpp (original)
+++ lldb/trunk/source/DataFormatters/LanguageCategory.cpp Mon Dec 14 20:20:48 2015
@@ -242,6 +242,12 @@ LanguageCategory::GetCategory () const
return m_category_sp;
}
+FormatCache&
+LanguageCategory::GetFormatCache ()
+{
+ return m_format_cache;
+}
+
void
LanguageCategory::Enable ()
{
More information about the lldb-commits
mailing list