void MatchedPropertiesCache::add(const RenderStyle* style, const RenderStyle* parentStyle, unsigned hash, const MatchResult& matchResult) { static const unsigned maxAdditionsBetweenSweeps = 100; if (++m_additionsSinceLastSweep >= maxAdditionsBetweenSweeps && !m_sweepTimer.isActive()) { static const unsigned sweepTimeInSeconds = 60; m_sweepTimer.startOneShot(sweepTimeInSeconds, FROM_HERE); } ASSERT(hash); Cache::AddResult addResult = m_cache.add(hash, nullptr); if (addResult.isNewEntry) addResult.storedValue->value = adoptPtr(new CachedMatchedProperties); CachedMatchedProperties* cacheItem = addResult.storedValue->value.get(); if (!addResult.isNewEntry) cacheItem->clear(); cacheItem->set(style, parentStyle, matchResult); }
void MatchedPropertiesCache::add(const ComputedStyle& style, const ComputedStyle& parentStyle, unsigned hash, const MatchedPropertiesVector& properties) { #if !ENABLE(OILPAN) static const unsigned maxAdditionsBetweenSweeps = 100; if (++m_additionsSinceLastSweep >= maxAdditionsBetweenSweeps && !m_sweepTimer.isActive()) { static const unsigned sweepTimeInSeconds = 60; m_sweepTimer.startOneShot(sweepTimeInSeconds, FROM_HERE); } #endif ASSERT(hash); Cache::AddResult addResult = m_cache.add(hash, nullptr); if (addResult.isNewEntry) addResult.storedValue->value = adoptPtrWillBeNoop(new CachedMatchedProperties); CachedMatchedProperties* cacheItem = addResult.storedValue->value.get(); if (!addResult.isNewEntry) cacheItem->clear(); cacheItem->set(style, parentStyle, properties); }