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 () { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits