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