aprantl created this revision.
aprantl added reviewers: jingham, davide.
aprantl added a parent revision: D71233: Do not cache hardcoded formats in 
FormatManager.

This refactoring makes the lookup caching easier to reason about. This has no 
observable effect although it does slightly change what is being cached.

Before this patch a negative lookup in the LanguageCategory would be cached, 
but a positive wouldn't.
After this patch LanguageCategory lookups aren't cached, period.


https://reviews.llvm.org/D71289

Files:
  lldb/source/DataFormatters/FormatManager.cpp


Index: lldb/source/DataFormatters/FormatManager.cpp
===================================================================
--- lldb/source/DataFormatters/FormatManager.cpp
+++ lldb/source/DataFormatters/FormatManager.cpp
@@ -630,7 +630,22 @@
     return retval_sp;
 
   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS));
-  LLDB_LOGF(log, "[%s] Search failed. Giving hardcoded a chance.", 
__FUNCTION__);
+
+  LLDB_LOGF(log, "[%s] Search failed. Giving language a chance.", 
__FUNCTION__);
+  for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) {
+    if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) {
+      ImplSP retval_sp;
+      if (lang_category->Get(match_data, retval_sp))
+        if (retval_sp) {
+          LLDB_LOGF(log, "[%s] Language search success. Returning.",
+                    __FUNCTION__);
+          return retval_sp;
+        }
+    }
+  }
+
+  LLDB_LOGF(log, "[%s] Search failed. Giving hardcoded a chance.",
+            __FUNCTION__);
   return GetHardcoded<ImplSP>(match_data);
 }
 
@@ -655,21 +670,6 @@
   }
 
   m_categories_map.Get(match_data, retval_sp);
-  if (!retval_sp) {
-    LLDB_LOGF(log, "[%s] Search failed. Giving language a chance.",
-              __FUNCTION__);
-    for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) {
-      if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) 
{
-        if (lang_category->Get(match_data, retval_sp))
-          break;
-      }
-    }
-    if (retval_sp) {
-      LLDB_LOGF(log, "[%s] Language search success. Returning.", __FUNCTION__);
-      return retval_sp;
-    }
-  }
-
   if (match_data.GetTypeForCache() && (!retval_sp || 
!retval_sp->NonCacheable())) {
     LLDB_LOGF(log, "[%s] Caching %p for type %s", __FUNCTION__,
               static_cast<void *>(retval_sp.get()),


Index: lldb/source/DataFormatters/FormatManager.cpp
===================================================================
--- lldb/source/DataFormatters/FormatManager.cpp
+++ lldb/source/DataFormatters/FormatManager.cpp
@@ -630,7 +630,22 @@
     return retval_sp;
 
   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS));
-  LLDB_LOGF(log, "[%s] Search failed. Giving hardcoded a chance.", __FUNCTION__);
+
+  LLDB_LOGF(log, "[%s] Search failed. Giving language a chance.", __FUNCTION__);
+  for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) {
+    if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) {
+      ImplSP retval_sp;
+      if (lang_category->Get(match_data, retval_sp))
+        if (retval_sp) {
+          LLDB_LOGF(log, "[%s] Language search success. Returning.",
+                    __FUNCTION__);
+          return retval_sp;
+        }
+    }
+  }
+
+  LLDB_LOGF(log, "[%s] Search failed. Giving hardcoded a chance.",
+            __FUNCTION__);
   return GetHardcoded<ImplSP>(match_data);
 }
 
@@ -655,21 +670,6 @@
   }
 
   m_categories_map.Get(match_data, retval_sp);
-  if (!retval_sp) {
-    LLDB_LOGF(log, "[%s] Search failed. Giving language a chance.",
-              __FUNCTION__);
-    for (lldb::LanguageType lang_type : match_data.GetCandidateLanguages()) {
-      if (LanguageCategory *lang_category = GetCategoryForLanguage(lang_type)) {
-        if (lang_category->Get(match_data, retval_sp))
-          break;
-      }
-    }
-    if (retval_sp) {
-      LLDB_LOGF(log, "[%s] Language search success. Returning.", __FUNCTION__);
-      return retval_sp;
-    }
-  }
-
   if (match_data.GetTypeForCache() && (!retval_sp || !retval_sp->NonCacheable())) {
     LLDB_LOGF(log, "[%s] Caching %p for type %s", __FUNCTION__,
               static_cast<void *>(retval_sp.get()),
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to