tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 37189355ecc35635266b246e9ba67e6a2544a9fc
parent a0b293e34d9651ebf55f4479ebc94c7de999f68b
Author: Randell Jesup <rjesup@mozilla.com>
Date:   Fri, 24 Oct 2025 18:00:04 +0000

Bug 1996298: PurgeByFrecency was over-purging due to holding references r=jstutte

Differential Revision: https://phabricator.services.mozilla.com/D270001

Diffstat:
Mnetwerk/cache2/CacheStorageService.cpp | 12+++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/netwerk/cache2/CacheStorageService.cpp b/netwerk/cache2/CacheStorageService.cpp @@ -1510,7 +1510,8 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency( } else { if (entry->GetEnhanceID().EqualsLiteral("dict:")) { LOG( - ("*** Entry is a dictionary origin, metadata size %d, referenced " + ("*** Ignored Entry is a dictionary origin, metadata size %d, " + "referenced " "%d, Frecency %f", entry->GetMetadataMemoryConsumption(), entry->IsReferenced(), entry->GetFrecency())); @@ -1530,7 +1531,9 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency( break; } - RefPtr<CacheEntry> entry = checkPurge.mEntry; + // Ensure it's deleted immediately if purged so we can record the + // mMemorySize savings + RefPtr<CacheEntry> entry = std::move(checkPurge.mEntry); if (entry->Purge(CacheEntry::PURGE_WHOLE)) { numPurged++; @@ -1544,7 +1547,10 @@ Result<size_t, nsresult> CacheStorageService::MemoryPool::PurgeByFrecency( } } - LOG(("MemoryPool::PurgeByFrecency done")); + LOG( + ("MemoryPool::PurgeByFrecency done, purged %zu - mMemorySize %u, " + "memoryLimit %u", + numPurged, (uint32_t)mMemorySize, memoryLimit)); return numPurged; }