| 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) 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. | 
|   11  |   11  | 
|   12     This library is distributed in the hope that it will be useful, |   12     This library is distributed in the hope that it will be useful, | 
|   13     but WITHOUT ANY WARRANTY; without even the implied warranty of |   13     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|   14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU |   14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|   15     Library General Public License for more details. |   15     Library General Public License for more details. | 
|   16  |   16  | 
|   17     You should have received a copy of the GNU Library General Public License |   17     You should have received a copy of the GNU Library General Public License | 
|   18     along with this library; see the file COPYING.LIB.  If not, write to |   18     along with this library; see the file COPYING.LIB.  If not, write to | 
|   19     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |   19     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 
|   20     Boston, MA 02110-1301, USA. |   20     Boston, MA 02110-1301, USA. | 
|   21 */ |   21 */ | 
|   22  |   22  | 
|   23 #include "core/fetch/MemoryCache.h" |   23 #include "core/fetch/MemoryCache.h" | 
|   24  |   24  | 
|   25 #include "platform/Logging.h" |   25 #include "core/fetch/ResourceLoadingLog.h" | 
|   26 #include "platform/TraceEvent.h" |   26 #include "platform/TraceEvent.h" | 
|   27 #include "platform/weborigin/SecurityOrigin.h" |   27 #include "platform/weborigin/SecurityOrigin.h" | 
|   28 #include "platform/weborigin/SecurityOriginHash.h" |   28 #include "platform/weborigin/SecurityOriginHash.h" | 
|   29 #include "public/platform/Platform.h" |   29 #include "public/platform/Platform.h" | 
|   30 #include "wtf/Assertions.h" |   30 #include "wtf/Assertions.h" | 
|   31 #include "wtf/AutoReset.h" |   31 #include "wtf/AutoReset.h" | 
|   32 #include "wtf/CurrentTime.h" |   32 #include "wtf/CurrentTime.h" | 
|   33 #include "wtf/MathExtras.h" |   33 #include "wtf/MathExtras.h" | 
|   34 #include "wtf/text/CString.h" |   34 #include "wtf/text/CString.h" | 
|   35  |   35  | 
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  160 void MemoryCache::add(Resource* resource) |  160 void MemoryCache::add(Resource* resource) | 
|  161 { |  161 { | 
|  162     ASSERT(WTF::isMainThread()); |  162     ASSERT(WTF::isMainThread()); | 
|  163     ASSERT(resource->url().isValid()); |  163     ASSERT(resource->url().isValid()); | 
|  164     ResourceMap* resources = ensureResourceMap(resource->cacheIdentifier()); |  164     ResourceMap* resources = ensureResourceMap(resource->cacheIdentifier()); | 
|  165     KURL url = removeFragmentIdentifierIfNeeded(resource->url()); |  165     KURL url = removeFragmentIdentifierIfNeeded(resource->url()); | 
|  166     RELEASE_ASSERT(!resources->contains(url)); |  166     RELEASE_ASSERT(!resources->contains(url)); | 
|  167     resources->set(url, MemoryCacheEntry::create(resource)); |  167     resources->set(url, MemoryCacheEntry::create(resource)); | 
|  168     update(resource, 0, resource->size(), true); |  168     update(resource, 0, resource->size(), true); | 
|  169  |  169  | 
|  170     WTF_LOG(ResourceLoading, "MemoryCache::add Added '%s', resource %p\n", resou
     rce->url().getString().latin1().data(), resource); |  170     RESOURCE_LOADING_DVLOG(1) << "MemoryCache::add Added " << resource->url().ge
     tString() << ", resource " << resource; | 
|  171 } |  171 } | 
|  172  |  172  | 
|  173 void MemoryCache::remove(Resource* resource) |  173 void MemoryCache::remove(Resource* resource) | 
|  174 { |  174 { | 
|  175     // The resource may have already been removed by someone other than our call
     er, |  175     // The resource may have already been removed by someone other than our call
     er, | 
|  176     // who needed a fresh copy for a reload. |  176     // who needed a fresh copy for a reload. | 
|  177     if (MemoryCacheEntry* entry = getEntryForResource(resource)) |  177     if (MemoryCacheEntry* entry = getEntryForResource(resource)) | 
|  178         evict(entry); |  178         evict(entry); | 
|  179 } |  179 } | 
|  180  |  180  | 
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  358     m_maxDeferredPruneDeadCapacity = cDeferredPruneDeadCapacityFactor * maxDeadB
     ytes; |  358     m_maxDeferredPruneDeadCapacity = cDeferredPruneDeadCapacityFactor * maxDeadB
     ytes; | 
|  359     m_capacity = totalBytes; |  359     m_capacity = totalBytes; | 
|  360     prune(); |  360     prune(); | 
|  361 } |  361 } | 
|  362  |  362  | 
|  363 void MemoryCache::evict(MemoryCacheEntry* entry) |  363 void MemoryCache::evict(MemoryCacheEntry* entry) | 
|  364 { |  364 { | 
|  365     ASSERT(WTF::isMainThread()); |  365     ASSERT(WTF::isMainThread()); | 
|  366  |  366  | 
|  367     Resource* resource = entry->resource(); |  367     Resource* resource = entry->resource(); | 
|  368     WTF_LOG(ResourceLoading, "Evicting resource %p for '%s' from cache", resourc
     e, resource->url().getString().latin1().data()); |  368     RESOURCE_LOADING_DVLOG(1) << "Evicting resource " << resource << " for " << 
     resource->url().getString() << " from cache"; | 
|  369     TRACE_EVENT1("blink", "MemoryCache::evict", "resource", resource->url().getS
     tring().utf8()); |  369     TRACE_EVENT1("blink", "MemoryCache::evict", "resource", resource->url().getS
     tring().utf8()); | 
|  370     // The resource may have already been removed by someone other than our call
     er, |  370     // The resource may have already been removed by someone other than our call
     er, | 
|  371     // who needed a fresh copy for a reload. See <http://bugs.webkit.org/show_bu
     g.cgi?id=12479#c6>. |  371     // who needed a fresh copy for a reload. See <http://bugs.webkit.org/show_bu
     g.cgi?id=12479#c6>. | 
|  372     update(resource, resource->size(), 0, false); |  372     update(resource, resource->size(), 0, false); | 
|  373     removeFromLiveDecodedResourcesList(entry); |  373     removeFromLiveDecodedResourcesList(entry); | 
|  374  |  374  | 
|  375     ResourceMap* resources = m_resourceMaps.get(resource->cacheIdentifier()); |  375     ResourceMap* resources = m_resourceMaps.get(resource->cacheIdentifier()); | 
|  376     ASSERT(resources); |  376     ASSERT(resources); | 
|  377     KURL url = removeFragmentIdentifierIfNeeded(resource->url()); |  377     KURL url = removeFragmentIdentifierIfNeeded(resource->url()); | 
|  378     ResourceMap::iterator it = resources->find(url); |  378     ResourceMap::iterator it = resources->find(url); | 
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  782                 printf("(%.1fK, %.1fK, %uA, %dR, %d); ", currentResource->decode
     dSize() / 1024.0f, (currentResource->encodedSize() + currentResource->overheadSi
     ze()) / 1024.0f, current->m_accessCount, currentResource->hasClientsOrObservers(
     ), currentResource->isPurgeable()); |  782                 printf("(%.1fK, %.1fK, %uA, %dR, %d); ", currentResource->decode
     dSize() / 1024.0f, (currentResource->encodedSize() + currentResource->overheadSi
     ze()) / 1024.0f, current->m_accessCount, currentResource->hasClientsOrObservers(
     ), currentResource->isPurgeable()); | 
|  783  |  783  | 
|  784             current = current->m_previousInAllResourcesList; |  784             current = current->m_previousInAllResourcesList; | 
|  785         } |  785         } | 
|  786     } |  786     } | 
|  787 } |  787 } | 
|  788  |  788  | 
|  789 #endif // MEMORY_CACHE_STATS |  789 #endif // MEMORY_CACHE_STATS | 
|  790  |  790  | 
|  791 } // namespace blink |  791 } // namespace blink | 
| OLD | NEW |