void ImageDecodingStore::removeFromCacheInternal( const T* cacheEntry, U* cacheMap, V* identifierMap, Vector<std::unique_ptr<CacheEntry>>* deletionList) { const size_t cacheEntryBytes = cacheEntry->memoryUsageInBytes(); ASSERT(m_heapMemoryUsageInBytes >= cacheEntryBytes); m_heapMemoryUsageInBytes -= cacheEntryBytes; // Remove entry from identifier map. typename V::iterator iter = identifierMap->find(cacheEntry->generator()); ASSERT(iter != identifierMap->end()); iter->value.remove(cacheEntry->cacheKey()); if (!iter->value.size()) identifierMap->remove(iter); // Remove entry from cache map. deletionList->append(cacheMap->take(cacheEntry->cacheKey())); TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("blink.image_decoding"), "ImageDecodingStoreHeapMemoryUsageBytes", m_heapMemoryUsageInBytes); TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("blink.image_decoding"), "ImageDecodingStoreNumOfDecoders", m_decoderCacheMap.size()); }
void ImageDecodingStore::removeFromCacheInternal(const T* cacheEntry, U* cacheMap, V* identifierMap, Vector<OwnPtr<CacheEntry> >* deletionList) { const size_t cacheEntryBytes = cacheEntry->memoryUsageInBytes(); if (cacheEntry->isDiscardable()) { ASSERT(m_discardableMemoryUsageInBytes >= cacheEntryBytes); m_discardableMemoryUsageInBytes -= cacheEntryBytes; } else { ASSERT(m_heapMemoryUsageInBytes >= cacheEntryBytes); m_heapMemoryUsageInBytes -= cacheEntryBytes; } // Remove entry from identifier map. typename V::iterator iter = identifierMap->find(cacheEntry->generator()); ASSERT(iter != identifierMap->end()); iter->value.remove(cacheEntry->cacheKey()); if (!iter->value.size()) identifierMap->remove(iter); // Remove entry from cache map. deletionList->append(cacheMap->take(cacheEntry->cacheKey())); 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()); }
void ImageDecodingStore::removeFromCacheInternal(const CacheEntry* cacheEntry, Vector<OwnPtr<CacheEntry> >* deletionList) { if (!cacheEntry->isDiscardable()) decrementMemoryUsage(cacheEntry->memoryUsageInBytes()); TRACE_COUNTER1("webkit", "ImageDecodingStoreMemoryUsageBytes", m_memoryUsageInBytes); // Remove from m_cacheMap. CacheIdentifier key = cacheEntry->cacheKey(); deletionList->append(m_cacheMap.take(key)); TRACE_COUNTER1("webkit", "ImageDecodingStoreNumOfEntries", m_cacheMap.size()); // Remove from m_cachedSizeMap. CachedSizeMap::iterator iter = m_cachedSizeMap.find(key.first); ASSERT(iter != m_cachedSizeMap.end()); iter->value.remove(key.second); if (!iter->value.size()) m_cachedSizeMap.remove(iter); }
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(std::unique_ptr<T> cacheEntry, U* cacheMap, V* identifierMap) { const size_t cacheEntryBytes = cacheEntry->memoryUsageInBytes(); 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, std::move(cacheEntry)); TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("blink.image_decoding"), "ImageDecodingStoreHeapMemoryUsageBytes", m_heapMemoryUsageInBytes); TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("blink.image_decoding"), "ImageDecodingStoreNumOfDecoders", m_decoderCacheMap.size()); }
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()); }
double ThrottledTextureUploader::estimatedTexturesPerSecond() { processQueries(); // The history should never be empty because we initialize all elements with an estimate. ASSERT(m_texturesPerSecondHistory.size() == uploadHistorySize); // Sort the history and use the median as our estimate. std::vector<double> sortedHistory(m_texturesPerSecondHistory.begin(), m_texturesPerSecondHistory.end()); std::sort(sortedHistory.begin(), sortedHistory.end()); estimatedTexturesPerSecondGlobal = sortedHistory[sortedHistory.size() * 2 / 3]; TRACE_COUNTER1("cc", "estimatedTexturesPerSecond", estimatedTexturesPerSecondGlobal); return estimatedTexturesPerSecondGlobal; }