void ImageDecodingStore::insertCacheInternal(PassOwnPtr<CacheEntry> cacheEntry) { if (!cacheEntry->isDiscardable()) incrementMemoryUsage(cacheEntry->memoryUsageInBytes()); TRACE_COUNTER1("webkit", "ImageDecodingStoreMemoryUsageBytes", m_memoryUsageInBytes); // m_orderedCacheList is used to support LRU operations to reorder cache // entries quickly. m_orderedCacheList.append(cacheEntry.get()); CacheIdentifier key = cacheEntry->cacheKey(); // m_cacheMap is used for indexing and quick lookup of a cached image. It owns // all cache entries. m_cacheMap.add(key, cacheEntry); TRACE_COUNTER1("webkit", "ImageDecodingStoreNumOfEntries", m_cacheMap.size()); // m_cachedSizeMap keeps all scaled sizes associated with an ImageFrameGenerator. CachedSizeMap::AddResult result = m_cachedSizeMap.add(key.first, SizeSet()); result.iterator->value.add(key.second); }
void ImageDecodingStore::insertCacheInternal(PassOwnPtr<T> cacheEntry, U* cacheMap, V* identifierMap) { const size_t cacheEntryBytes = cacheEntry->memoryUsageInBytes(); if (cacheEntry->isDiscardable()) m_discardableMemoryUsageInBytes += cacheEntryBytes; else m_heapMemoryUsageInBytes += cacheEntryBytes; // m_orderedCacheList is used to support LRU operations to reorder cache // entries quickly. m_orderedCacheList.append(cacheEntry.get()); typename U::KeyType key = cacheEntry->cacheKey(); typename V::AddResult result = identifierMap->add(cacheEntry->generator(), typename V::MappedType()); result.storedValue->value.add(key); cacheMap->add(key, cacheEntry); TRACE_COUNTER1("webkit", "ImageDecodingStoreDiscardableMemoryUsageBytes", m_discardableMemoryUsageInBytes); TRACE_COUNTER1("webkit", "ImageDecodingStoreHeapMemoryUsageBytes", m_heapMemoryUsageInBytes); TRACE_COUNTER1("webkit", "ImageDecodingStoreNumOfImages", m_imageCacheMap.size()); TRACE_COUNTER1("webkit", "ImageDecodingStoreNumOfDecoders", m_decoderCacheMap.size()); }