[compiler-rt] [scudo] Added LRU eviction policy to secondary cache. (PR #99409)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 18 16:04:13 PDT 2024
================
@@ -213,23 +225,35 @@ template <typename Config> class MapAllocatorCache {
if (Config::getDefaultReleaseToOsIntervalMs() != INT32_MIN)
ReleaseToOsInterval = Config::getDefaultReleaseToOsIntervalMs();
setOption(Option::ReleaseInterval, static_cast<sptr>(ReleaseToOsInterval));
+
+ // The cache is initially empty
+ LRUHead = CachedBlock::InvalidEntry;
+ LRUTail = CachedBlock::InvalidEntry;
+
+ // Available entries will be retrieved starting from the beginning of the
+ // Entries array
+ AvailableHead = 0;
+ for (u32 I = 0; I < Config::getEntriesArraySize() - 1; I++)
+ Entries[I].Next = static_cast<u16>(I + 1);
+
+ Entries[Config::getEntriesArraySize() - 1].Next = CachedBlock::InvalidEntry;
}
void store(const Options &Options, LargeBlock::Header *H) EXCLUDES(Mutex) {
if (!canCache(H->CommitSize))
return unmap(H);
- bool EntryCached = false;
- bool EmptyCache = false;
const s32 Interval = atomic_load_relaxed(&ReleaseToOsIntervalMs);
- const u64 Time = getMonotonicTimeFast();
const u32 MaxCount = atomic_load_relaxed(&MaxEntriesCount);
+ u64 Time;
CachedBlock Entry;
+ Vector<MemMapT, 1U> EvictionMemMaps;
----------------
ChiaHungDuan wrote:
Can we have some comment on why we use 1 as default?
https://github.com/llvm/llvm-project/pull/99409
More information about the llvm-commits
mailing list