| 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 }; | 65 }; |
| 66 | 66 |
| 67 enum UpdateReason { | 67 enum UpdateReason { |
| 68 UpdateForAccess, | 68 UpdateForAccess, |
| 69 UpdateForPropertyChange | 69 UpdateForPropertyChange |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 // MemoryCacheEntry class is used only in MemoryCache class, but we don't make | 72 // MemoryCacheEntry class is used only in MemoryCache class, but we don't make |
| 73 // MemoryCacheEntry class an inner class of MemoryCache because of dependency | 73 // MemoryCacheEntry class an inner class of MemoryCache because of dependency |
| 74 // from MemoryCacheLRUList. | 74 // from MemoryCacheLRUList. |
| 75 class MemoryCacheEntry FINAL : public NoBaseWillBeGarbageCollectedFinalized<Memo
ryCacheEntry> { | 75 class MemoryCacheEntry final : public NoBaseWillBeGarbageCollectedFinalized<Memo
ryCacheEntry> { |
| 76 public: | 76 public: |
| 77 static PassOwnPtrWillBeRawPtr<MemoryCacheEntry> create(Resource* resource) {
return adoptPtrWillBeNoop(new MemoryCacheEntry(resource)); } | 77 static PassOwnPtrWillBeRawPtr<MemoryCacheEntry> create(Resource* resource) {
return adoptPtrWillBeNoop(new MemoryCacheEntry(resource)); } |
| 78 void trace(Visitor*); | 78 void trace(Visitor*); |
| 79 | 79 |
| 80 ResourcePtr<Resource> m_resource; | 80 ResourcePtr<Resource> m_resource; |
| 81 bool m_inLiveDecodedResourcesList; | 81 bool m_inLiveDecodedResourcesList; |
| 82 unsigned m_accessCount; | 82 unsigned m_accessCount; |
| 83 MemoryCacheLiveResourcePriority m_liveResourcePriority; | 83 MemoryCacheLiveResourcePriority m_liveResourcePriority; |
| 84 double m_lastDecodedAccessTime; // Used as a thrash guard | 84 double m_lastDecodedAccessTime; // Used as a thrash guard |
| 85 | 85 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 99 , m_nextInLiveResourcesList(nullptr) | 99 , m_nextInLiveResourcesList(nullptr) |
| 100 , m_previousInAllResourcesList(nullptr) | 100 , m_previousInAllResourcesList(nullptr) |
| 101 , m_nextInAllResourcesList(nullptr) | 101 , m_nextInAllResourcesList(nullptr) |
| 102 { | 102 { |
| 103 } | 103 } |
| 104 }; | 104 }; |
| 105 | 105 |
| 106 // MemoryCacheLRUList is used only in MemoryCache class, but we don't make | 106 // MemoryCacheLRUList is used only in MemoryCache class, but we don't make |
| 107 // MemoryCacheLRUList an inner struct of MemoryCache because we can't define | 107 // MemoryCacheLRUList an inner struct of MemoryCache because we can't define |
| 108 // VectorTraits for inner structs. | 108 // VectorTraits for inner structs. |
| 109 struct MemoryCacheLRUList FINAL { | 109 struct MemoryCacheLRUList final { |
| 110 ALLOW_ONLY_INLINE_ALLOCATION(); | 110 ALLOW_ONLY_INLINE_ALLOCATION(); |
| 111 public: | 111 public: |
| 112 RawPtrWillBeMember<MemoryCacheEntry> m_head; | 112 RawPtrWillBeMember<MemoryCacheEntry> m_head; |
| 113 RawPtrWillBeMember<MemoryCacheEntry> m_tail; | 113 RawPtrWillBeMember<MemoryCacheEntry> m_tail; |
| 114 | 114 |
| 115 MemoryCacheLRUList() : m_head(nullptr), m_tail(nullptr) { } | 115 MemoryCacheLRUList() : m_head(nullptr), m_tail(nullptr) { } |
| 116 void trace(Visitor*); | 116 void trace(Visitor*); |
| 117 }; | 117 }; |
| 118 | 118 |
| 119 } | 119 } |
| 120 | 120 |
| 121 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::MemoryCacheLRUList); | 121 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::MemoryCacheLRUList); |
| 122 | 122 |
| 123 namespace blink { | 123 namespace blink { |
| 124 | 124 |
| 125 class MemoryCache FINAL : public NoBaseWillBeGarbageCollectedFinalized<MemoryCac
he>, public WebThread::TaskObserver { | 125 class MemoryCache final : public NoBaseWillBeGarbageCollectedFinalized<MemoryCac
he>, public WebThread::TaskObserver { |
| 126 WTF_MAKE_NONCOPYABLE(MemoryCache); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; | 126 WTF_MAKE_NONCOPYABLE(MemoryCache); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; |
| 127 public: | 127 public: |
| 128 static PassOwnPtrWillBeRawPtr<MemoryCache> create(); | 128 static PassOwnPtrWillBeRawPtr<MemoryCache> create(); |
| 129 ~MemoryCache(); | 129 ~MemoryCache(); |
| 130 void trace(Visitor*); | 130 void trace(Visitor*); |
| 131 | 131 |
| 132 struct TypeStatistic { | 132 struct TypeStatistic { |
| 133 int count; | 133 int count; |
| 134 int size; | 134 int size; |
| 135 int liveSize; | 135 int liveSize; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 size_t minDeadCapacity() const { return m_minDeadCapacity; } | 205 size_t minDeadCapacity() const { return m_minDeadCapacity; } |
| 206 size_t maxDeadCapacity() const { return m_maxDeadCapacity; } | 206 size_t maxDeadCapacity() const { return m_maxDeadCapacity; } |
| 207 size_t capacity() const { return m_capacity; } | 207 size_t capacity() const { return m_capacity; } |
| 208 size_t liveSize() const { return m_liveSize; } | 208 size_t liveSize() const { return m_liveSize; } |
| 209 size_t deadSize() const { return m_deadSize; } | 209 size_t deadSize() const { return m_deadSize; } |
| 210 | 210 |
| 211 // Exposed for testing | 211 // Exposed for testing |
| 212 MemoryCacheLiveResourcePriority priority(Resource*) const; | 212 MemoryCacheLiveResourcePriority priority(Resource*) const; |
| 213 | 213 |
| 214 // TaskObserver implementation | 214 // TaskObserver implementation |
| 215 virtual void willProcessTask() OVERRIDE; | 215 virtual void willProcessTask() override; |
| 216 virtual void didProcessTask() OVERRIDE; | 216 virtual void didProcessTask() override; |
| 217 | 217 |
| 218 private: | 218 private: |
| 219 MemoryCache(); | 219 MemoryCache(); |
| 220 | 220 |
| 221 MemoryCacheLRUList* lruListFor(unsigned accessCount, size_t); | 221 MemoryCacheLRUList* lruListFor(unsigned accessCount, size_t); |
| 222 | 222 |
| 223 #ifdef MEMORY_CACHE_STATS | 223 #ifdef MEMORY_CACHE_STATS |
| 224 void dumpStats(Timer<MemoryCache>*); | 224 void dumpStats(Timer<MemoryCache>*); |
| 225 void dumpLRULists(bool includeLive) const; | 225 void dumpLRULists(bool includeLive) const; |
| 226 #endif | 226 #endif |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 // Returns the global cache. | 293 // Returns the global cache. |
| 294 MemoryCache* memoryCache(); | 294 MemoryCache* memoryCache(); |
| 295 | 295 |
| 296 // Sets the global cache, used to swap in a test instance. Returns the old | 296 // Sets the global cache, used to swap in a test instance. Returns the old |
| 297 // MemoryCache object. | 297 // MemoryCache object. |
| 298 PassOwnPtrWillBeRawPtr<MemoryCache> replaceMemoryCacheForTesting(PassOwnPtrWillB
eRawPtr<MemoryCache>); | 298 PassOwnPtrWillBeRawPtr<MemoryCache> replaceMemoryCacheForTesting(PassOwnPtrWillB
eRawPtr<MemoryCache>); |
| 299 | 299 |
| 300 } | 300 } |
| 301 | 301 |
| 302 #endif | 302 #endif |
| OLD | NEW |