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

Unified Diff: Source/core/fetch/Resource.cpp

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/fetch/Resource.h ('k') | Source/core/fetch/ResourceFetcher.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/fetch/Resource.cpp
diff --git a/Source/core/fetch/Resource.cpp b/Source/core/fetch/Resource.cpp
index d0970510712f634412b9f6adf49856c0c7cb3540..e96ad6f42cb5466d12f1eaca56926a928c1e534d 100644
--- a/Source/core/fetch/Resource.cpp
+++ b/Source/core/fetch/Resource.cpp
@@ -102,14 +102,12 @@ Resource::Resource(const ResourceRequest& request, Type type)
, m_identifier(0)
, m_encodedSize(0)
, m_decodedSize(0)
- , m_accessCount(0)
, m_handleCount(0)
, m_preloadCount(0)
, m_protectorCount(0)
, m_preloadResult(PreloadNotReferenced)
, m_cacheLiveResourcePriority(CacheLiveResourcePriorityLow)
, m_requestedFromNetworkingLayer(false)
- , m_inCache(false)
, m_loading(false)
, m_switchingClientsToRevalidatedResource(false)
, m_type(type)
@@ -140,7 +138,7 @@ Resource::~Resource()
{
ASSERT(!m_resourceToRevalidate); // Should be true because canDelete() checks this.
ASSERT(canDelete());
- RELEASE_ASSERT(!inCache());
+ RELEASE_ASSERT(!memoryCache()->contains(this));
RELEASE_ASSERT(!ResourceCallback::callbackHandler()->isScheduled(this));
ASSERT(!m_deleted);
ASSERT(url().isNull() || memoryCache()->resourceForURL(KURL(ParsedURLString, url())) != this);
@@ -350,7 +348,7 @@ bool Resource::unlock()
if (!m_data->isLocked())
return true;
- if (!inCache() || hasClients() || m_handleCount > 1 || m_proxyResource || m_resourceToRevalidate || !m_loadFinishTime || !isSafeToUnlock())
+ if (!memoryCache()->contains(this) || hasClients() || m_handleCount > 1 || m_proxyResource || m_resourceToRevalidate || !m_loadFinishTime || !isSafeToUnlock())
return false;
m_data->unlock();
@@ -405,7 +403,7 @@ CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const
void Resource::setCacheLiveResourcePriority(CacheLiveResourcePriority priority)
{
- if (inCache() && memoryCache()->isInLiveDecodedResourcesList(this) && cacheLiveResourcePriority() != static_cast<unsigned>(priority)) {
+ if (memoryCache()->contains(this) && memoryCache()->isInLiveDecodedResourcesList(this) && cacheLiveResourcePriority() != static_cast<unsigned>(priority)) {
memoryCache()->removeFromLiveDecodedResourcesList(this);
m_cacheLiveResourcePriority = priority;
memoryCache()->insertInLiveDecodedResourcesList(this);
@@ -461,7 +459,7 @@ bool Resource::addClientToSet(ResourceClient* client)
else
m_preloadResult = PreloadReferenced;
}
- if (!hasClients() && inCache())
+ if (!hasClients() && memoryCache()->contains(this))
memoryCache()->addToLiveResourcesSize(this);
// If we have existing data to send to the new client and the resource type supprts it, send it asynchronously.
@@ -490,7 +488,7 @@ void Resource::removeClient(ResourceClient* client)
bool deleted = deleteIfPossible();
if (!deleted && !hasClients()) {
- if (inCache()) {
+ if (memoryCache()->contains(this)) {
memoryCache()->removeFromLiveResourcesSize(this);
memoryCache()->removeFromLiveDecodedResourcesList(this);
}
@@ -536,7 +534,7 @@ void Resource::cancelTimerFired(Timer<Resource>* timer)
bool Resource::deleteIfPossible()
{
- if (canDelete() && !inCache()) {
+ if (canDelete() && !memoryCache()->contains(this)) {
InspectorInstrumentation::willDestroyResource(this);
delete this;
return true;
@@ -544,25 +542,14 @@ bool Resource::deleteIfPossible()
return false;
}
-void Resource::setDecodedSize(size_t size)
+void Resource::setDecodedSize(size_t decodedSize)
{
- if (size == m_decodedSize)
+ if (decodedSize == m_decodedSize)
return;
+ size_t oldSize = size();
+ m_decodedSize = decodedSize;
- ptrdiff_t delta = size - m_decodedSize;
-
- // The object must now be moved to a different queue, since its size has been changed.
- // We have to remove explicitly before updating m_decodedSize, so that we find the correct previous
- // queue.
- if (inCache())
- memoryCache()->removeFromLRUList(this);
-
- m_decodedSize = size;
-
- if (inCache()) {
- // Now insert into the new LRU list.
- memoryCache()->insertInLRUList(this);
-
+ if (memoryCache()->contains(this)) {
// Insert into or remove from the live decoded list if necessary.
// When inserting into the LiveDecodedResourcesList it is possible
// that the m_lastDecodedAccessTime is still zero or smaller than
@@ -576,38 +563,24 @@ void Resource::setDecodedSize(size_t size)
memoryCache()->removeFromLiveDecodedResourcesList(this);
// Update the cache's size totals.
- memoryCache()->adjustSize(hasClients(), delta);
+ memoryCache()->update(this, oldSize, size());
}
}
-void Resource::setEncodedSize(size_t size)
+void Resource::setEncodedSize(size_t encodedSize)
{
- if (size == m_encodedSize)
+ if (encodedSize == m_encodedSize)
return;
-
- ptrdiff_t delta = size - m_encodedSize;
-
- // The object must now be moved to a different queue, since its size has been changed.
- // We have to remove explicitly before updating m_encodedSize, so that we find the correct previous
- // queue.
- if (inCache())
- memoryCache()->removeFromLRUList(this);
-
- m_encodedSize = size;
-
- if (inCache()) {
- // Now insert into the new LRU list.
- memoryCache()->insertInLRUList(this);
-
- // Update the cache's size totals.
- memoryCache()->adjustSize(hasClients(), delta);
- }
+ size_t oldSize = size();
+ m_encodedSize = encodedSize;
+ if (memoryCache()->contains(this))
+ memoryCache()->update(this, oldSize, size());
}
void Resource::didAccessDecodedData(double timeStamp)
{
m_lastDecodedAccessTime = timeStamp;
- if (inCache()) {
+ if (memoryCache()->contains(this)) {
if (memoryCache()->isInLiveDecodedResourcesList(this)) {
memoryCache()->removeFromLiveDecodedResourcesList(this);
memoryCache()->insertInLiveDecodedResourcesList(this);
@@ -670,8 +643,8 @@ void Resource::clearResourceToRevalidate()
void Resource::switchClientsToRevalidatedResource()
{
ASSERT(m_resourceToRevalidate);
- ASSERT(m_resourceToRevalidate->inCache());
- ASSERT(!inCache());
+ ASSERT(memoryCache()->contains(m_resourceToRevalidate));
+ ASSERT(!memoryCache()->contains(this));
WTF_LOG(ResourceLoading, "Resource %p switchClientsToRevalidatedResource %p", this, m_resourceToRevalidate);
@@ -740,9 +713,9 @@ void Resource::updateResponseAfterRevalidation(const ResourceResponse& validatin
void Resource::revalidationSucceeded(const ResourceResponse& response)
{
ASSERT(m_resourceToRevalidate);
- ASSERT(!m_resourceToRevalidate->inCache());
+ ASSERT(!memoryCache()->contains(m_resourceToRevalidate));
ASSERT(m_resourceToRevalidate->isLoaded());
- ASSERT(inCache());
+ ASSERT(memoryCache()->contains(this));
// Calling evict() can potentially delete revalidatingResource, which we use
// below. This mustn't be the case since revalidation means it is loaded
@@ -766,22 +739,6 @@ void Resource::revalidationFailed()
clearResourceToRevalidate();
}
-void Resource::updateForAccess()
-{
- ASSERT(inCache());
-
- // Need to make sure to remove before we increase the access count, since
- // the queue will possibly change.
- memoryCache()->removeFromLRUList(this);
-
- // If this is the first time the resource has been accessed, adjust the size of the cache to account for its initial size.
- if (!m_accessCount)
- memoryCache()->adjustSize(hasClients(), size());
-
- m_accessCount++;
- memoryCache()->insertInLRUList(this);
-}
-
void Resource::registerHandle(ResourcePtrBase* h)
{
++m_handleCount;
@@ -801,7 +758,7 @@ void Resource::unregisterHandle(ResourcePtrBase* h)
if (deleteIfPossible())
return;
unlock();
- } else if (m_handleCount == 1 && inCache()) {
+ } else if (m_handleCount == 1 && memoryCache()->contains(this)) {
unlock();
}
}
« no previous file with comments | « Source/core/fetch/Resource.h ('k') | Source/core/fetch/ResourceFetcher.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698