Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: Source/core/fetch/MemoryCache.h

Issue 640463003: MemoryCache: Enable MemoryCache to have multiple isolated resource maps (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: tweak variable names Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
4 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 4 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 struct Statistics { 163 struct Statistics {
164 TypeStatistic images; 164 TypeStatistic images;
165 TypeStatistic cssStyleSheets; 165 TypeStatistic cssStyleSheets;
166 TypeStatistic scripts; 166 TypeStatistic scripts;
167 TypeStatistic xslStyleSheets; 167 TypeStatistic xslStyleSheets;
168 TypeStatistic fonts; 168 TypeStatistic fonts;
169 TypeStatistic other; 169 TypeStatistic other;
170 }; 170 };
171 171
172 Resource* resourceForURL(const KURL&); 172 Resource* resourceForURL(const KURL&);
173 Resource* resourceForURL(const KURL&, const String& cacheIdentifier);
174 WillBeHeapVector<Member<Resource>> resourcesForURL(const KURL&);
173 175
174 void add(Resource*); 176 void add(Resource*);
175 void replace(Resource* newResource, Resource* oldResource); 177 void replace(Resource* newResource, Resource* oldResource);
176 void remove(Resource*); 178 void remove(Resource*);
177 bool contains(const Resource*) const; 179 bool contains(const Resource*) const;
178 180
179 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL); 181 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL);
180 182
183 static String defaultCacheIdentifier();
184
181 // Sets the cache's memory capacities, in bytes. These will hold only approx imately, 185 // Sets the cache's memory capacities, in bytes. These will hold only approx imately,
182 // since the decoded cost of resources like scripts and stylesheets is not k nown. 186 // since the decoded cost of resources like scripts and stylesheets is not k nown.
183 // - minDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is under pressure. 187 // - minDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is under pressure.
184 // - maxDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is not under pressure. 188 // - maxDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is not under pressure.
185 // - totalBytes: The maximum number of bytes that the cache should consume overall. 189 // - totalBytes: The maximum number of bytes that the cache should consume overall.
186 void setCapacities(size_t minDeadBytes, size_t maxDeadBytes, size_t totalByt es); 190 void setCapacities(size_t minDeadBytes, size_t maxDeadBytes, size_t totalByt es);
187 void setDelayBeforeLiveDecodedPrune(double seconds) { m_delayBeforeLiveDecod edPrune = seconds; } 191 void setDelayBeforeLiveDecodedPrune(double seconds) { m_delayBeforeLiveDecod edPrune = seconds; }
188 void setMaxPruneDeferralDelay(double seconds) { m_maxPruneDeferralDelay = se conds; } 192 void setMaxPruneDeferralDelay(double seconds) { m_maxPruneDeferralDelay = se conds; }
189 193
190 void evictResources(); 194 void evictResources();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 size_t deadCapacity() const; 249 size_t deadCapacity() const;
246 250
247 // pruneDeadResources() - Flush decoded and encoded data from resources not referenced by Web pages. 251 // pruneDeadResources() - Flush decoded and encoded data from resources not referenced by Web pages.
248 // pruneLiveResources() - Flush decoded data from resources still referenced by Web pages. 252 // pruneLiveResources() - Flush decoded data from resources still referenced by Web pages.
249 void pruneDeadResources(); // Automatically decide how much to prune. 253 void pruneDeadResources(); // Automatically decide how much to prune.
250 void pruneLiveResources(); 254 void pruneLiveResources();
251 void pruneNow(double currentTime); 255 void pruneNow(double currentTime);
252 256
253 bool evict(MemoryCacheEntry*); 257 bool evict(MemoryCacheEntry*);
254 258
259 MemoryCacheEntry* getEntryForResource(const Resource*) const;
260
255 static void removeURLFromCacheInternal(ExecutionContext*, const KURL&); 261 static void removeURLFromCacheInternal(ExecutionContext*, const KURL&);
256 262
257 bool m_inPruneResources; 263 bool m_inPruneResources;
258 bool m_prunePending; 264 bool m_prunePending;
259 double m_maxPruneDeferralDelay; 265 double m_maxPruneDeferralDelay;
260 double m_pruneTimeStamp; 266 double m_pruneTimeStamp;
261 double m_pruneFrameTimeStamp; 267 double m_pruneFrameTimeStamp;
262 268
263 size_t m_capacity; 269 size_t m_capacity;
264 size_t m_minDeadCapacity; 270 size_t m_minDeadCapacity;
265 size_t m_maxDeadCapacity; 271 size_t m_maxDeadCapacity;
266 size_t m_maxDeferredPruneDeadCapacity; 272 size_t m_maxDeferredPruneDeadCapacity;
267 double m_delayBeforeLiveDecodedPrune; 273 double m_delayBeforeLiveDecodedPrune;
268 274
269 size_t m_liveSize; // The number of bytes currently consumed by "live" resou rces in the cache. 275 size_t m_liveSize; // The number of bytes currently consumed by "live" resou rces in the cache.
270 size_t m_deadSize; // The number of bytes currently consumed by "dead" resou rces in the cache. 276 size_t m_deadSize; // The number of bytes currently consumed by "dead" resou rces in the cache.
271 277
272 // Size-adjusted and popularity-aware LRU list collection for cache objects. This collection can hold 278 // Size-adjusted and popularity-aware LRU list collection for cache objects. This collection can hold
273 // more resources than the cached resource map, since it can also hold "stal e" multiple versions of objects that are 279 // more resources than the cached resource map, since it can also hold "stal e" multiple versions of objects that are
274 // waiting to die when the clients referencing them go away. 280 // waiting to die when the clients referencing them go away.
275 WillBeHeapVector<MemoryCacheLRUList, 32> m_allResources; 281 WillBeHeapVector<MemoryCacheLRUList, 32> m_allResources;
276 282
277 // Lists just for live resources with decoded data. Access to this list is b ased off of painting the resource. 283 // Lists just for live resources with decoded data. Access to this list is b ased off of painting the resource.
278 // The lists are ordered by decode priority, with higher indices having high er priorities. 284 // The lists are ordered by decode priority, with higher indices having high er priorities.
279 MemoryCacheLRUList m_liveDecodedResources[MemoryCacheLiveResourcePriorityHig h + 1]; 285 MemoryCacheLRUList m_liveDecodedResources[MemoryCacheLiveResourcePriorityHig h + 1];
280 286
281 // A URL-based map of all resources that are in the cache (including the fre shest version of objects that are currently being 287 // A URL-based map of all resources that are in the cache (including the fre shest version of objects that are currently being
282 // referenced by a Web page). 288 // referenced by a Web page).
283 typedef WillBeHeapHashMap<String, OwnPtrWillBeMember<MemoryCacheEntry>> Reso urceMap; 289 using ResourceMap = WillBeHeapHashMap<String, OwnPtrWillBeMember<MemoryCache Entry>>;
284 ResourceMap m_resources; 290 using ResourceMapIndex = WillBeHeapHashMap<String, OwnPtrWillBeMember<Resour ceMap>>;
291 ResourceMap* ensureResourceMap(const String& cacheIdentifier);
292 ResourceMapIndex m_resourceMaps;
285 293
286 #if ENABLE(OILPAN) 294 #if ENABLE(OILPAN)
287 // Unlike m_allResources, m_liveResources is a set of Resource objects which 295 // Unlike m_allResources, m_liveResources is a set of Resource objects which
288 // should not be deleted. m_allResources only contains on-cache Resource 296 // should not be deleted. m_allResources only contains on-cache Resource
289 // objects. 297 // objects.
290 // FIXME: Can we remove manual lifetime management of Resource and this? 298 // FIXME: Can we remove manual lifetime management of Resource and this?
291 HeapHashSet<Member<Resource>> m_liveResources; 299 HeapHashSet<Member<Resource>> m_liveResources;
292 friend RawPtr<MemoryCache> replaceMemoryCacheForTesting(RawPtr<MemoryCache>) ; 300 friend RawPtr<MemoryCache> replaceMemoryCacheForTesting(RawPtr<MemoryCache>) ;
293 #endif 301 #endif
294 302
295 friend class MemoryCacheTest; 303 friend class MemoryCacheTest;
296 #ifdef MEMORY_CACHE_STATS 304 #ifdef MEMORY_CACHE_STATS
297 Timer<MemoryCache> m_statsTimer; 305 Timer<MemoryCache> m_statsTimer;
298 #endif 306 #endif
299 }; 307 };
300 308
301 // Returns the global cache. 309 // Returns the global cache.
302 MemoryCache* memoryCache(); 310 MemoryCache* memoryCache();
303 311
304 // Sets the global cache, used to swap in a test instance. Returns the old 312 // Sets the global cache, used to swap in a test instance. Returns the old
305 // MemoryCache object. 313 // MemoryCache object.
306 PassOwnPtrWillBeRawPtr<MemoryCache> replaceMemoryCacheForTesting(PassOwnPtrWillB eRawPtr<MemoryCache>); 314 PassOwnPtrWillBeRawPtr<MemoryCache> replaceMemoryCacheForTesting(PassOwnPtrWillB eRawPtr<MemoryCache>);
307 315
308 } 316 }
309 317
310 #endif 318 #endif
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/serviceworker/chromium/memory-cache.html ('k') | Source/core/fetch/MemoryCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698