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

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

Issue 649213002: Oilpan: eager resource disposal on MemoryCache eviction. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « Source/core/fetch/MemoryCache.h ('k') | no next file » | 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) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 5 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 78 }
79 79
80 void MemoryCacheEntry::trace(Visitor* visitor) 80 void MemoryCacheEntry::trace(Visitor* visitor)
81 { 81 {
82 visitor->trace(m_previousInLiveResourcesList); 82 visitor->trace(m_previousInLiveResourcesList);
83 visitor->trace(m_nextInLiveResourcesList); 83 visitor->trace(m_nextInLiveResourcesList);
84 visitor->trace(m_previousInAllResourcesList); 84 visitor->trace(m_previousInAllResourcesList);
85 visitor->trace(m_nextInAllResourcesList); 85 visitor->trace(m_nextInAllResourcesList);
86 } 86 }
87 87
88 #if ENABLE(OILPAN)
89 void MemoryCacheEntry::dispose()
90 {
91 m_resource.clear();
92 }
93 #endif
94
88 void MemoryCacheLRUList::trace(Visitor* visitor) 95 void MemoryCacheLRUList::trace(Visitor* visitor)
89 { 96 {
90 visitor->trace(m_head); 97 visitor->trace(m_head);
91 visitor->trace(m_tail); 98 visitor->trace(m_tail);
92 } 99 }
93 100
94 inline MemoryCache::MemoryCache() 101 inline MemoryCache::MemoryCache()
95 : m_inPruneResources(false) 102 : m_inPruneResources(false)
96 , m_prunePending(false) 103 , m_prunePending(false)
97 , m_maxPruneDeferralDelay(cMaxPruneDeferralDelay) 104 , m_maxPruneDeferralDelay(cMaxPruneDeferralDelay)
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 Resource* resource = entry->m_resource.get(); 372 Resource* resource = entry->m_resource.get();
366 bool canDelete = resource->canDelete(); 373 bool canDelete = resource->canDelete();
367 WTF_LOG(ResourceLoading, "Evicting resource %p for '%s' from cache", resourc e, resource->url().string().latin1().data()); 374 WTF_LOG(ResourceLoading, "Evicting resource %p for '%s' from cache", resourc e, resource->url().string().latin1().data());
368 // The resource may have already been removed by someone other than our call er, 375 // The resource may have already been removed by someone other than our call er,
369 // who needed a fresh copy for a reload. See <http://bugs.webkit.org/show_bu g.cgi?id=12479#c6>. 376 // who needed a fresh copy for a reload. See <http://bugs.webkit.org/show_bu g.cgi?id=12479#c6>.
370 update(resource, resource->size(), 0, false); 377 update(resource, resource->size(), 0, false);
371 removeFromLiveDecodedResourcesList(entry); 378 removeFromLiveDecodedResourcesList(entry);
372 379
373 ResourceMap::iterator it = m_resources.find(resource->url()); 380 ResourceMap::iterator it = m_resources.find(resource->url());
374 ASSERT(it != m_resources.end()); 381 ASSERT(it != m_resources.end());
375 #if !ENABLE(OILPAN) 382 #if ENABLE(OILPAN)
383 MemoryCacheEntry* entryPtr = it->value;
384 #else
376 OwnPtr<MemoryCacheEntry> entryPtr; 385 OwnPtr<MemoryCacheEntry> entryPtr;
377 entryPtr.swap(it->value); 386 entryPtr.swap(it->value);
378 #endif 387 #endif
379 m_resources.remove(it); 388 m_resources.remove(it);
389 #if ENABLE(OILPAN)
390 if (entryPtr)
391 entryPtr->dispose();
392 #endif
380 return canDelete; 393 return canDelete;
381 } 394 }
382 395
383 MemoryCacheLRUList* MemoryCache::lruListFor(unsigned accessCount, size_t size) 396 MemoryCacheLRUList* MemoryCache::lruListFor(unsigned accessCount, size_t size)
384 { 397 {
385 ASSERT(accessCount > 0); 398 ASSERT(accessCount > 0);
386 unsigned queueIndex = WTF::fastLog2(size / accessCount); 399 unsigned queueIndex = WTF::fastLog2(size / accessCount);
387 if (m_allResources.size() <= queueIndex) 400 if (m_allResources.size() <= queueIndex)
388 m_allResources.grow(queueIndex + 1); 401 m_allResources.grow(queueIndex + 1);
389 return &m_allResources[queueIndex]; 402 return &m_allResources[queueIndex];
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 printf("(%.1fK, %.1fK, %uA, %dR, %d, %d); ", current->decodedSiz e() / 1024.0f, (current->encodedSize() + current->overheadSize()) / 1024.0f, cur rent->accessCount(), current->hasClients(), current->isPurgeable(), current->was Purged()); 802 printf("(%.1fK, %.1fK, %uA, %dR, %d, %d); ", current->decodedSiz e() / 1024.0f, (current->encodedSize() + current->overheadSize()) / 1024.0f, cur rent->accessCount(), current->hasClients(), current->isPurgeable(), current->was Purged());
790 803
791 current = prev; 804 current = prev;
792 } 805 }
793 } 806 }
794 } 807 }
795 808
796 #endif // MEMORY_CACHE_STATS 809 #endif // MEMORY_CACHE_STATS
797 810
798 } // namespace blink 811 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/fetch/MemoryCache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698