[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