OLD | NEW |
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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 void remove(CachedResource* resource) { evict(resource); } | 112 void remove(CachedResource* resource) { evict(resource); } |
113 | 113 |
114 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL); | 114 static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL); |
115 | 115 |
116 // Sets the cache's memory capacities, in bytes. These will hold only approx
imately, | 116 // Sets the cache's memory capacities, in bytes. These will hold only approx
imately, |
117 // since the decoded cost of resources like scripts and stylesheets is not k
nown. | 117 // since the decoded cost of resources like scripts and stylesheets is not k
nown. |
118 // - minDeadBytes: The maximum number of bytes that dead resources should c
onsume when the cache is under pressure. | 118 // - minDeadBytes: The maximum number of bytes that dead resources should c
onsume when the cache is under pressure. |
119 // - maxDeadBytes: The maximum number of bytes that dead resources should c
onsume when the cache is not under pressure. | 119 // - maxDeadBytes: The maximum number of bytes that dead resources should c
onsume when the cache is not under pressure. |
120 // - totalBytes: The maximum number of bytes that the cache should consume
overall. | 120 // - totalBytes: The maximum number of bytes that the cache should consume
overall. |
121 void setCapacities(unsigned minDeadBytes, unsigned maxDeadBytes, unsigned to
talBytes); | 121 void setCapacities(unsigned minDeadBytes, unsigned maxDeadBytes, unsigned to
talBytes); |
| 122 void setDelayBeforeLiveDecodedPrune(unsigned seconds) { m_delayBeforeLiveDec
odedPrune = seconds; } |
122 | 123 |
123 void evictResources(); | 124 void evictResources(); |
124 | 125 |
125 void prune(); | 126 void prune(); |
126 | 127 |
127 // Calls to put the cached resource into and out of LRU lists. | 128 // Calls to put the cached resource into and out of LRU lists. |
128 void insertInLRUList(CachedResource*); | 129 void insertInLRUList(CachedResource*); |
129 void removeFromLRUList(CachedResource*); | 130 void removeFromLRUList(CachedResource*); |
130 | 131 |
131 // Called to adjust the cache totals when a resource changes size. | 132 // Called to adjust the cache totals when a resource changes size. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 167 |
167 void evict(CachedResource*); | 168 void evict(CachedResource*); |
168 | 169 |
169 static void removeURLFromCacheInternal(ScriptExecutionContext*, const KURL&)
; | 170 static void removeURLFromCacheInternal(ScriptExecutionContext*, const KURL&)
; |
170 | 171 |
171 bool m_inPruneResources; | 172 bool m_inPruneResources; |
172 | 173 |
173 unsigned m_capacity; | 174 unsigned m_capacity; |
174 unsigned m_minDeadCapacity; | 175 unsigned m_minDeadCapacity; |
175 unsigned m_maxDeadCapacity; | 176 unsigned m_maxDeadCapacity; |
| 177 unsigned m_delayBeforeLiveDecodedPrune; |
| 178 double m_deadDecodedDataDeletionInterval; |
176 | 179 |
177 unsigned m_liveSize; // The number of bytes currently consumed by "live" res
ources in the cache. | 180 unsigned m_liveSize; // The number of bytes currently consumed by "live" res
ources in the cache. |
178 unsigned m_deadSize; // The number of bytes currently consumed by "dead" res
ources in the cache. | 181 unsigned m_deadSize; // The number of bytes currently consumed by "dead" res
ources in the cache. |
179 | 182 |
180 // Size-adjusted and popularity-aware LRU list collection for cache objects.
This collection can hold | 183 // Size-adjusted and popularity-aware LRU list collection for cache objects.
This collection can hold |
181 // more resources than the cached resource map, since it can also hold "stal
e" multiple versions of objects that are | 184 // more resources than the cached resource map, since it can also hold "stal
e" multiple versions of objects that are |
182 // waiting to die when the clients referencing them go away. | 185 // waiting to die when the clients referencing them go away. |
183 Vector<LRUList, 32> m_allResources; | 186 Vector<LRUList, 32> m_allResources; |
184 | 187 |
185 // List just for live resources with decoded data. Access to this list is b
ased off of painting the resource. | 188 // Lists just for live resources with decoded data. Access to this list is b
ased off of painting the resource. |
186 LRUList m_liveDecodedResources; | 189 // The lists are ordered by decode priority, with higher indices having high
er priorities. |
| 190 LRUList m_liveDecodedResources[3]; |
187 | 191 |
188 // A URL-based map of all resources that are in the cache (including the fre
shest version of objects that are currently being | 192 // A URL-based map of all resources that are in the cache (including the fre
shest version of objects that are currently being |
189 // referenced by a Web page). | 193 // referenced by a Web page). |
190 HashMap<String, CachedResource*> m_resources; | 194 HashMap<String, CachedResource*> m_resources; |
191 | 195 |
192 #ifdef MEMORY_CACHE_STATS | 196 #ifdef MEMORY_CACHE_STATS |
193 Timer<MemoryCache> m_statsTimer; | 197 Timer<MemoryCache> m_statsTimer; |
194 #endif | 198 #endif |
195 }; | 199 }; |
196 | 200 |
197 // Returns the global cache. | 201 // Returns the global cache. |
198 MemoryCache* memoryCache(); | 202 MemoryCache* memoryCache(); |
199 | 203 |
200 // Sets the global cache, used to swap in a test instance. | 204 // Sets the global cache, used to swap in a test instance. |
201 void setMemoryCacheForTesting(MemoryCache*); | 205 void setMemoryCacheForTesting(MemoryCache*); |
202 | 206 |
203 } | 207 } |
204 | 208 |
205 #endif | 209 #endif |
OLD | NEW |