diff options
-rw-r--r-- | lldb/include/lldb/DataFormatters/FormatManager.h | 14 | ||||
-rw-r--r-- | lldb/include/lldb/DataFormatters/LanguageCategory.h | 3 | ||||
-rw-r--r-- | lldb/source/DataFormatters/FormatManager.cpp | 20 | ||||
-rw-r--r-- | lldb/source/DataFormatters/LanguageCategory.cpp | 6 |
4 files changed, 30 insertions, 13 deletions
diff --git a/lldb/include/lldb/DataFormatters/FormatManager.h b/lldb/include/lldb/DataFormatters/FormatManager.h index c8c92be8b4b..24ba5a7f0aa 100644 --- a/lldb/include/lldb/DataFormatters/FormatManager.h +++ b/lldb/include/lldb/DataFormatters/FormatManager.h @@ -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; diff --git a/lldb/include/lldb/DataFormatters/LanguageCategory.h b/lldb/include/lldb/DataFormatters/LanguageCategory.h index 4f1d9c64d99..a7040099f21 100644 --- a/lldb/include/lldb/DataFormatters/LanguageCategory.h +++ b/lldb/include/lldb/DataFormatters/LanguageCategory.h @@ -69,6 +69,9 @@ public: lldb::TypeCategoryImplSP GetCategory () const; + FormatCache& + GetFormatCache (); + void Enable (); diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index 8edc8e5ca8b..35a0468306f 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -123,6 +123,19 @@ GetFormatFromFormatName (const char *format_name, bool partial_match_ok, Format 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 (FormattersMatchData& match_data) } 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) diff --git a/lldb/source/DataFormatters/LanguageCategory.cpp b/lldb/source/DataFormatters/LanguageCategory.cpp index df2cd2c588a..261c3e6302e 100644 --- a/lldb/source/DataFormatters/LanguageCategory.cpp +++ b/lldb/source/DataFormatters/LanguageCategory.cpp @@ -242,6 +242,12 @@ LanguageCategory::GetCategory () const return m_category_sp; } +FormatCache& +LanguageCategory::GetFormatCache () +{ + return m_format_cache; +} + void LanguageCategory::Enable () { |