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

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

Issue 164333008: Make MemoryCache's LRUList manipulation private (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/fetch/ImageResource.cpp ('k') | Source/core/fetch/MemoryCache.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 public: 65 public:
66 MemoryCache(); 66 MemoryCache();
67 virtual ~MemoryCache(); 67 virtual ~MemoryCache();
68 68
69 class MemoryCacheEntry { 69 class MemoryCacheEntry {
70 public: 70 public:
71 static PassOwnPtr<MemoryCacheEntry> create(Resource* resource) { return adoptPtr(new MemoryCacheEntry(resource)); } 71 static PassOwnPtr<MemoryCacheEntry> create(Resource* resource) { return adoptPtr(new MemoryCacheEntry(resource)); }
72 72
73 ResourcePtr<Resource> m_resource; 73 ResourcePtr<Resource> m_resource;
74 bool m_inLiveDecodedResourcesList; 74 bool m_inLiveDecodedResourcesList;
75 unsigned m_accessCount;
75 76
76 MemoryCacheEntry* m_previousInLiveResourcesList; 77 MemoryCacheEntry* m_previousInLiveResourcesList;
77 MemoryCacheEntry* m_nextInLiveResourcesList; 78 MemoryCacheEntry* m_nextInLiveResourcesList;
78 MemoryCacheEntry* m_previousInAllResourcesList; 79 MemoryCacheEntry* m_previousInAllResourcesList;
79 MemoryCacheEntry* m_nextInAllResourcesList; 80 MemoryCacheEntry* m_nextInAllResourcesList;
80 81
81 private: 82 private:
82 MemoryCacheEntry(Resource* resource) 83 MemoryCacheEntry(Resource* resource)
83 : m_resource(resource) 84 : m_resource(resource)
84 , m_inLiveDecodedResourcesList(false) 85 , m_inLiveDecodedResourcesList(false)
86 , m_accessCount(0)
85 , m_previousInLiveResourcesList(0) 87 , m_previousInLiveResourcesList(0)
86 , m_nextInLiveResourcesList(0) 88 , m_nextInLiveResourcesList(0)
87 , m_previousInAllResourcesList(0) 89 , m_previousInAllResourcesList(0)
88 , m_nextInAllResourcesList(0) 90 , m_nextInAllResourcesList(0)
89 { 91 {
90 } 92 }
91 }; 93 };
92 94
93 struct LRUList { 95 struct LRUList {
94 MemoryCacheEntry* m_head; 96 MemoryCacheEntry* m_head;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 TypeStatistic xslStyleSheets; 130 TypeStatistic xslStyleSheets;
129 TypeStatistic fonts; 131 TypeStatistic fonts;
130 TypeStatistic other; 132 TypeStatistic other;
131 }; 133 };
132 134
133 Resource* resourceForURL(const KURL&); 135 Resource* resourceForURL(const KURL&);
134 136
135 void add(Resource*); 137 void add(Resource*);
136 void replace(Resource* newResource, Resource* oldResource); 138 void replace(Resource* newResource, Resource* oldResource);
137 void remove(Resource* resource) { evict(resource); } 139 void remove(Resource* resource) { evict(resource); }
140 bool contains(Resource*);
138 141
139 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL); 142 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL);
140 143
141 // Sets the cache's memory capacities, in bytes. These will hold only approx imately, 144 // Sets the cache's memory capacities, in bytes. These will hold only approx imately,
142 // since the decoded cost of resources like scripts and stylesheets is not k nown. 145 // since the decoded cost of resources like scripts and stylesheets is not k nown.
143 // - minDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is under pressure. 146 // - minDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is under pressure.
144 // - maxDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is not under pressure. 147 // - maxDeadBytes: The maximum number of bytes that dead resources should c onsume when the cache is not under pressure.
145 // - totalBytes: The maximum number of bytes that the cache should consume overall. 148 // - totalBytes: The maximum number of bytes that the cache should consume overall.
146 void setCapacities(size_t minDeadBytes, size_t maxDeadBytes, size_t totalByt es); 149 void setCapacities(size_t minDeadBytes, size_t maxDeadBytes, size_t totalByt es);
147 void setDelayBeforeLiveDecodedPrune(double seconds) { m_delayBeforeLiveDecod edPrune = seconds; } 150 void setDelayBeforeLiveDecodedPrune(double seconds) { m_delayBeforeLiveDecod edPrune = seconds; }
148 void setMaxPruneDeferralDelay(double seconds) { m_maxPruneDeferralDelay = se conds; } 151 void setMaxPruneDeferralDelay(double seconds) { m_maxPruneDeferralDelay = se conds; }
149 152
150 void evictResources(); 153 void evictResources();
151 154
152 void prune(Resource* justReleasedResource = 0); 155 void prune(Resource* justReleasedResource = 0);
153 156
154 // Calls to put the cached resource into and out of LRU lists. 157 // Called to adjust a resource's size, lru list position, and access count.
155 void insertInLRUList(Resource*); 158 void update(Resource*, size_t oldSize, size_t newSize, bool wasAccessed = fa lse);
156 void removeFromLRUList(Resource*); 159 void updateForAccess(Resource* resource) { update(resource, resource->size() , resource->size(), true); }
157
158 // Called to adjust the cache totals when a resource changes size.
159 void adjustSize(bool live, ptrdiff_t delta);
160 160
161 // Track decoded resources that are in the cache and referenced by a Web pag e. 161 // Track decoded resources that are in the cache and referenced by a Web pag e.
162 void insertInLiveDecodedResourcesList(Resource*); 162 void insertInLiveDecodedResourcesList(Resource*);
163 void removeFromLiveDecodedResourcesList(Resource*); 163 void removeFromLiveDecodedResourcesList(Resource*);
164 bool isInLiveDecodedResourcesList(Resource*); 164 bool isInLiveDecodedResourcesList(Resource*);
165 165
166 void addToLiveResourcesSize(Resource*); 166 void addToLiveResourcesSize(Resource*);
167 void removeFromLiveResourcesSize(Resource*); 167 void removeFromLiveResourcesSize(Resource*);
168 168
169 static void removeURLFromCache(ExecutionContext*, const KURL&); 169 static void removeURLFromCache(ExecutionContext*, const KURL&);
170 170
171 Statistics getStatistics(); 171 Statistics getStatistics();
172 172
173 size_t minDeadCapacity() const { return m_minDeadCapacity; } 173 size_t minDeadCapacity() const { return m_minDeadCapacity; }
174 size_t maxDeadCapacity() const { return m_maxDeadCapacity; } 174 size_t maxDeadCapacity() const { return m_maxDeadCapacity; }
175 size_t capacity() const { return m_capacity; } 175 size_t capacity() const { return m_capacity; }
176 size_t liveSize() const { return m_liveSize; } 176 size_t liveSize() const { return m_liveSize; }
177 size_t deadSize() const { return m_deadSize; } 177 size_t deadSize() const { return m_deadSize; }
178 178
179 // TaskObserver implementation 179 // TaskObserver implementation
180 virtual void willProcessTask() OVERRIDE; 180 virtual void willProcessTask() OVERRIDE;
181 virtual void didProcessTask() OVERRIDE; 181 virtual void didProcessTask() OVERRIDE;
182 182
183 private: 183 private:
184 LRUList* lruListFor(MemoryCacheEntry*); 184 LRUList* lruListFor(unsigned accessCount, size_t);
185 185
186 #ifdef MEMORY_CACHE_STATS 186 #ifdef MEMORY_CACHE_STATS
187 void dumpStats(Timer<MemoryCache>*); 187 void dumpStats(Timer<MemoryCache>*);
188 void dumpLRULists(bool includeLive) const; 188 void dumpLRULists(bool includeLive) const;
189 #endif 189 #endif
190 190
191 // Calls to put the cached resource into and out of LRU lists.
192 void insertInLRUList(MemoryCacheEntry*, LRUList*);
193 void removeFromLRUList(MemoryCacheEntry*, LRUList*);
194
191 size_t liveCapacity() const; 195 size_t liveCapacity() const;
192 size_t deadCapacity() const; 196 size_t deadCapacity() const;
193 197
194 // pruneDeadResources() - Flush decoded and encoded data from resources not referenced by Web pages. 198 // pruneDeadResources() - Flush decoded and encoded data from resources not referenced by Web pages.
195 // pruneLiveResources() - Flush decoded data from resources still referenced by Web pages. 199 // pruneLiveResources() - Flush decoded data from resources still referenced by Web pages.
196 void pruneDeadResources(); // Automatically decide how much to prune. 200 void pruneDeadResources(); // Automatically decide how much to prune.
197 void pruneLiveResources(); 201 void pruneLiveResources();
198 void pruneNow(double currentTime); 202 void pruneNow(double currentTime);
199 203
200 bool evict(Resource*); 204 bool evict(Resource*);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 242
239 // Returns the global cache. 243 // Returns the global cache.
240 MemoryCache* memoryCache(); 244 MemoryCache* memoryCache();
241 245
242 // Sets the global cache, used to swap in a test instance. 246 // Sets the global cache, used to swap in a test instance.
243 void setMemoryCacheForTesting(MemoryCache*); 247 void setMemoryCacheForTesting(MemoryCache*);
244 248
245 } 249 }
246 250
247 #endif 251 #endif
OLDNEW
« no previous file with comments | « Source/core/fetch/ImageResource.cpp ('k') | Source/core/fetch/MemoryCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698