Improve the WebCore cache so that the maximum cacheable object size is scaled based...
[WebKit-https.git] / WebCore / khtml / misc / loader.cpp
index c0bf58bdcf97585cf4de318672229e1898889bf7..2168446d82b09ef8743647cd3ece1875bb13c8d4 100644 (file)
@@ -95,7 +95,7 @@ CachedObject::~CachedObject()
 
 void CachedObject::finish()
 {
-    if( m_size > MAXCACHEABLE )
+    if (m_size > Cache::maxCacheableObjectSize())
         m_status = Uncacheable;
     else
         m_status = Cached;
@@ -1607,6 +1607,7 @@ QPtrList<DocLoader>* Cache::docloader = 0;
 Loader *Cache::m_loader = 0;
 
 int Cache::maxSize = DEFCACHESIZE;
+int Cache::maxCacheable = MAXCACHEABLE;
 int Cache::flushCount = 0;
 
 QPixmap *Cache::nullPixmap = 0;
@@ -2085,14 +2086,13 @@ void Cache::flush(bool force)
 
     while (m_headOfUncacheableList)
         removeCacheEntry(m_headOfUncacheableList);
-    
+
     for (int i = MAX_LRU_LISTS-1; i>=0; i--) {
         if (m_totalSizeOfLRULists <= maxSize)
             break;
             
-        while (m_totalSizeOfLRULists > maxSize && m_LRULists[i].m_tail) {
+        while (m_totalSizeOfLRULists > maxSize && m_LRULists[i].m_tail)
             removeCacheEntry(m_LRULists[i].m_tail);
-        }
     }
 
     flushCount = m_countOfLRUAndUncacheableLists+10; // Flush again when the cache has grown.
@@ -2141,6 +2141,8 @@ void Cache::checkLRUAndUncacheableListIntegrity()
 void Cache::setSize( int bytes )
 {
     maxSize = bytes;
+    maxCacheable = maxSize / 128;
+
     // may be we need to clear parts of the cache
     flushCount = 0;
     flush(true);