[Lldb-commits] [lldb] c6c5944 - [lldb] Allow DataFileCache to be constructed with a different policy
Augusto Noronha via lldb-commits
lldb-commits at lists.llvm.org
Thu Aug 11 09:37:32 PDT 2022
Author: Augusto Noronha
Date: 2022-08-11T09:28:30-07:00
New Revision: c6c5944d05e81b5c7f48abea22a98389b1204a33
URL: https://github.com/llvm/llvm-project/commit/c6c5944d05e81b5c7f48abea22a98389b1204a33
DIFF: https://github.com/llvm/llvm-project/commit/c6c5944d05e81b5c7f48abea22a98389b1204a33.diff
LOG: [lldb] Allow DataFileCache to be constructed with a different policy
Differential Revision: https://reviews.llvm.org/D131531
Added:
Modified:
lldb/include/lldb/Core/DataFileCache.h
lldb/source/Core/DataFileCache.cpp
Removed:
################################################################################
diff --git a/lldb/include/lldb/Core/DataFileCache.h b/lldb/include/lldb/Core/DataFileCache.h
index 2dc69f6ce6b09..300c4842d9d22 100644
--- a/lldb/include/lldb/Core/DataFileCache.h
+++ b/lldb/include/lldb/Core/DataFileCache.h
@@ -14,6 +14,7 @@
#include "lldb/Utility/UUID.h"
#include "lldb/lldb-forward.h"
#include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/CachePruning.h"
#include "llvm/Support/Caching.h"
#include <mutex>
@@ -40,11 +41,18 @@ namespace lldb_private {
class DataFileCache {
public:
- /// Create a data file cache in the directory path that is specified.
+ /// Create a data file cache in the directory path that is specified, using
+ /// the specified policy.
///
/// Data will be cached in files created in this directory when clients call
/// DataFileCache::SetCacheData.
- DataFileCache(llvm::StringRef path);
+ DataFileCache(llvm::StringRef path,
+ llvm::CachePruningPolicy policy =
+ DataFileCache::GetLLDBIndexCachePolicy());
+
+ /// Gets the default LLDB index cache policy, which is controlled by the
+ /// "LLDBIndexCache" family of settings.
+ static llvm::CachePruningPolicy GetLLDBIndexCachePolicy();
/// Get cached data from the cache directory for the specified key.
///
diff --git a/lldb/source/Core/DataFileCache.cpp b/lldb/source/Core/DataFileCache.cpp
index b38adfda169aa..07c6839f01494 100644
--- a/lldb/source/Core/DataFileCache.cpp
+++ b/lldb/source/Core/DataFileCache.cpp
@@ -19,26 +19,34 @@
using namespace lldb_private;
-DataFileCache::DataFileCache(llvm::StringRef path) {
- m_cache_dir.SetPath(path);
- // Prune the cache based off of the LLDB settings each time we create a cache
- // object.
- ModuleListProperties &properties =
- ModuleList::GetGlobalModuleListProperties();
- llvm::CachePruningPolicy policy;
- // Only scan once an hour. If we have lots of debug sessions we don't want
- // to scan this directory too often. A timestamp file is written to the
- // directory to ensure
diff erent processes don't scan the directory too often.
- // This setting doesn't mean that a thread will continually scan the cache
- // directory within this process.
- policy.Interval = std::chrono::hours(1);
- // Get the user settings for pruning.
- policy.MaxSizeBytes = properties.GetLLDBIndexCacheMaxByteSize();
- policy.MaxSizePercentageOfAvailableSpace =
- properties.GetLLDBIndexCacheMaxPercent();
- policy.Expiration =
- std::chrono::hours(properties.GetLLDBIndexCacheExpirationDays() * 24);
+llvm::CachePruningPolicy DataFileCache::GetLLDBIndexCachePolicy() {
+ static llvm::CachePruningPolicy policy;
+ static llvm::once_flag once_flag;
+
+ llvm::call_once(once_flag, []() {
+ // Prune the cache based off of the LLDB settings each time we create a
+ // cache object.
+ ModuleListProperties &properties =
+ ModuleList::GetGlobalModuleListProperties();
+ // Only scan once an hour. If we have lots of debug sessions we don't want
+ // to scan this directory too often. A timestamp file is written to the
+ // directory to ensure
diff erent processes don't scan the directory too
+ // often. This setting doesn't mean that a thread will continually scan the
+ // cache directory within this process.
+ policy.Interval = std::chrono::hours(1);
+ // Get the user settings for pruning.
+ policy.MaxSizeBytes = properties.GetLLDBIndexCacheMaxByteSize();
+ policy.MaxSizePercentageOfAvailableSpace =
+ properties.GetLLDBIndexCacheMaxPercent();
+ policy.Expiration =
+ std::chrono::hours(properties.GetLLDBIndexCacheExpirationDays() * 24);
+ });
+ return policy;
+}
+
+DataFileCache::DataFileCache(llvm::StringRef path, llvm::CachePruningPolicy policy) {
+ m_cache_dir.SetPath(path);
pruneCache(path, policy);
// This lambda will get called when the data is gotten from the cache and
@@ -311,3 +319,4 @@ llvm::StringRef StringTableReader::Get(uint32_t offset) const {
return llvm::StringRef();
return llvm::StringRef(m_data.data() + offset);
}
+
More information about the lldb-commits
mailing list