2007-03-28 Oliver Hunt <oliver@apple.com>
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2007 08:38:05 +0000 (08:38 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2007 08:38:05 +0000 (08:38 +0000)
        Reviewed by Hyatt.

        Roll out r20511 due to incredible badness

        * loader/Cache.cpp:
        (WebCore::Cache::pruneAllResources):
        (WebCore::Cache::remove):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@20550 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/loader/Cache.cpp

index 56d41108b8ddc5d284b806494136a68d7ea5f9f0..6ea38226e530fd3ff74f02478e8453ff337c2a8c 100644 (file)
@@ -1,3 +1,13 @@
+2007-03-28  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Hyatt.
+
+        Roll out r20511 due to incredible badness
+
+        * loader/Cache.cpp:
+        (WebCore::Cache::pruneAllResources):
+        (WebCore::Cache::remove):
+
 2007-03-27  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Adam.
index 0e222aae0a44fc65be6d5cc74e9f178f3d35371a..9ff1b2ea65d0ecf03c44dcb04c8193047d99261c 100644 (file)
@@ -42,7 +42,7 @@ using namespace std;
 
 namespace WebCore {
 
-const int cDefaultCacheSize = 8192 * 1024;
+const int cDefaultCacheSize = 1000;// 8192 * 1024;
 
 Cache* cache()
 {
@@ -154,6 +154,7 @@ void Cache::pruneLiveResources()
 
 void Cache::pruneAllResources()
 {
+    m_maximumSize = 1000;
     // No need to prune if all of our objects fit.
     if (m_currentSize <= m_maximumSize)
         return;
@@ -233,8 +234,11 @@ void Cache::remove(CachedResource* resource)
         if (resource->referenced())
             removeFromLiveResourcesList(resource);
         
-        // FIXME: Multiple DocLoaders may still be holding the resource at this point
-        // effectively resulting in an invisible CachedResource
+        // Notify all doc loaders that might be observing this object still that it has been 
+        // extracted from the set of resources. 
+        HashSet<DocLoader*>::iterator end = m_docLoaders.end(); 
+        for (HashSet<DocLoader*>::iterator itr = m_docLoaders.begin(); itr != end; ++itr) 
+            (*itr)->removeCachedResource(resource); 
         
         // Subtract from our size totals.
         int delta = -resource->size();