[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
weinig at apple.com
weinig at apple.com
Wed Dec 22 15:38:16 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit f7baae05209037d15412e257eda819f0169b2746
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Nov 9 19:28:56 2010 +0000
Factor calculation of cache sizes based on cache model into shared function
https://bugs.webkit.org/show_bug.cgi?id=48706
Reviewed by Adam Roben.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::calculateCacheSizes):
* WebProcess/WebProcess.h:
* WebProcess/mac/WebProcessMac.mm:
(WebKit::volumeFreeSize):
(WebKit::WebProcess::platformSetCacheModel):
* WebProcess/win/WebProcessWin.cpp:
(WebKit::memorySize):
(WebKit::volumeFreeSize):
(WebKit::WebProcess::platformSetCacheModel):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71658 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index b21c883..5e6df3d 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,23 @@
2010-11-09 Sam Weinig <sam at webkit.org>
+ Reviewed by Adam Roben.
+
+ Factor calculation of cache sizes based on cache model into shared function
+ https://bugs.webkit.org/show_bug.cgi?id=48706
+
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::calculateCacheSizes):
+ * WebProcess/WebProcess.h:
+ * WebProcess/mac/WebProcessMac.mm:
+ (WebKit::volumeFreeSize):
+ (WebKit::WebProcess::platformSetCacheModel):
+ * WebProcess/win/WebProcessWin.cpp:
+ (WebKit::memorySize):
+ (WebKit::volumeFreeSize):
+ (WebKit::WebProcess::platformSetCacheModel):
+
+2010-11-09 Sam Weinig <sam at webkit.org>
+
Reviewed by Anders Carlsson.
Context menus show up in the wrong place when the page is scrolled
diff --git a/WebKit2/WebProcess/WebProcess.cpp b/WebKit2/WebProcess/WebProcess.cpp
index 774e9cc..5ffa301 100644
--- a/WebKit2/WebProcess/WebProcess.cpp
+++ b/WebKit2/WebProcess/WebProcess.cpp
@@ -235,6 +235,150 @@ void WebProcess::setCacheModel(uint32_t cm)
}
}
+void WebProcess::calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t diskFreeSize,
+ unsigned& cacheTotalCapacity, unsigned& cacheMinDeadCapacity, unsigned& cacheMaxDeadCapacity, double& deadDecodedDataDeletionInterval,
+ unsigned& pageCacheCapacity, unsigned long& urlCacheMemoryCapacity, unsigned long& urlCacheDiskCapacity)
+{
+ switch (cacheModel) {
+ case CacheModelDocumentViewer: {
+ // Page cache capacity (in pages)
+ pageCacheCapacity = 0;
+
+ // Object cache capacities (in bytes)
+ if (memorySize >= 2048)
+ cacheTotalCapacity = 96 * 1024 * 1024;
+ else if (memorySize >= 1536)
+ cacheTotalCapacity = 64 * 1024 * 1024;
+ else if (memorySize >= 1024)
+ cacheTotalCapacity = 32 * 1024 * 1024;
+ else if (memorySize >= 512)
+ cacheTotalCapacity = 16 * 1024 * 1024;
+
+ cacheMinDeadCapacity = 0;
+ cacheMaxDeadCapacity = 0;
+
+ // Foundation memory cache capacity (in bytes)
+ urlCacheMemoryCapacity = 0;
+
+ // Foundation disk cache capacity (in bytes)
+ urlCacheDiskCapacity = 0;
+
+ break;
+ }
+ case CacheModelDocumentBrowser: {
+ // Page cache capacity (in pages)
+ if (memorySize >= 1024)
+ pageCacheCapacity = 3;
+ else if (memorySize >= 512)
+ pageCacheCapacity = 2;
+ else if (memorySize >= 256)
+ pageCacheCapacity = 1;
+ else
+ pageCacheCapacity = 0;
+
+ // Object cache capacities (in bytes)
+ if (memorySize >= 2048)
+ cacheTotalCapacity = 96 * 1024 * 1024;
+ else if (memorySize >= 1536)
+ cacheTotalCapacity = 64 * 1024 * 1024;
+ else if (memorySize >= 1024)
+ cacheTotalCapacity = 32 * 1024 * 1024;
+ else if (memorySize >= 512)
+ cacheTotalCapacity = 16 * 1024 * 1024;
+
+ cacheMinDeadCapacity = cacheTotalCapacity / 8;
+ cacheMaxDeadCapacity = cacheTotalCapacity / 4;
+
+ // Foundation memory cache capacity (in bytes)
+ if (memorySize >= 2048)
+ urlCacheMemoryCapacity = 4 * 1024 * 1024;
+ else if (memorySize >= 1024)
+ urlCacheMemoryCapacity = 2 * 1024 * 1024;
+ else if (memorySize >= 512)
+ urlCacheMemoryCapacity = 1 * 1024 * 1024;
+ else
+ urlCacheMemoryCapacity = 512 * 1024;
+
+ // Foundation disk cache capacity (in bytes)
+ if (diskFreeSize >= 16384)
+ urlCacheDiskCapacity = 50 * 1024 * 1024;
+ else if (diskFreeSize >= 8192)
+ urlCacheDiskCapacity = 40 * 1024 * 1024;
+ else if (diskFreeSize >= 4096)
+ urlCacheDiskCapacity = 30 * 1024 * 1024;
+ else
+ urlCacheDiskCapacity = 20 * 1024 * 1024;
+
+ break;
+ }
+ case CacheModelPrimaryWebBrowser: {
+ // Page cache capacity (in pages)
+ // (Research indicates that value / page drops substantially after 3 pages.)
+ if (memorySize >= 2048)
+ pageCacheCapacity = 5;
+ else if (memorySize >= 1024)
+ pageCacheCapacity = 4;
+ else if (memorySize >= 512)
+ pageCacheCapacity = 3;
+ else if (memorySize >= 256)
+ pageCacheCapacity = 2;
+ else
+ pageCacheCapacity = 1;
+
+ // Object cache capacities (in bytes)
+ // (Testing indicates that value / MB depends heavily on content and
+ // browsing pattern. Even growth above 128MB can have substantial
+ // value / MB for some content / browsing patterns.)
+ if (memorySize >= 2048)
+ cacheTotalCapacity = 128 * 1024 * 1024;
+ else if (memorySize >= 1536)
+ cacheTotalCapacity = 96 * 1024 * 1024;
+ else if (memorySize >= 1024)
+ cacheTotalCapacity = 64 * 1024 * 1024;
+ else if (memorySize >= 512)
+ cacheTotalCapacity = 32 * 1024 * 1024;
+
+ cacheMinDeadCapacity = cacheTotalCapacity / 4;
+ cacheMaxDeadCapacity = cacheTotalCapacity / 2;
+
+ // This code is here to avoid a PLT regression. We can remove it if we
+ // can prove that the overall system gain would justify the regression.
+ cacheMaxDeadCapacity = std::max(24u, cacheMaxDeadCapacity);
+
+ deadDecodedDataDeletionInterval = 60;
+
+ // Foundation memory cache capacity (in bytes)
+ // (These values are small because WebCore does most caching itself.)
+ if (memorySize >= 1024)
+ urlCacheMemoryCapacity = 4 * 1024 * 1024;
+ else if (memorySize >= 512)
+ urlCacheMemoryCapacity = 2 * 1024 * 1024;
+ else if (memorySize >= 256)
+ urlCacheMemoryCapacity = 1 * 1024 * 1024;
+ else
+ urlCacheMemoryCapacity = 512 * 1024;
+
+ // Foundation disk cache capacity (in bytes)
+ if (diskFreeSize >= 16384)
+ urlCacheDiskCapacity = 175 * 1024 * 1024;
+ else if (diskFreeSize >= 8192)
+ urlCacheDiskCapacity = 150 * 1024 * 1024;
+ else if (diskFreeSize >= 4096)
+ urlCacheDiskCapacity = 125 * 1024 * 1024;
+ else if (diskFreeSize >= 2048)
+ urlCacheDiskCapacity = 100 * 1024 * 1024;
+ else if (diskFreeSize >= 1024)
+ urlCacheDiskCapacity = 75 * 1024 * 1024;
+ else
+ urlCacheDiskCapacity = 50 * 1024 * 1024;
+
+ break;
+ }
+ default:
+ ASSERT_NOT_REACHED();
+ };
+}
+
#if PLATFORM(WIN)
void WebProcess::setShouldPaintNativeControls(bool shouldPaintNativeControls)
{
diff --git a/WebKit2/WebProcess/WebProcess.h b/WebKit2/WebProcess/WebProcess.h
index e95ccd4..efccdfc 100644
--- a/WebKit2/WebProcess/WebProcess.h
+++ b/WebKit2/WebProcess/WebProcess.h
@@ -103,6 +103,9 @@ private:
void setCacheModel(uint32_t);
void platformSetCacheModel(CacheModel);
+ static void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t diskFreeSize,
+ unsigned& cacheTotalCapacity, unsigned& cacheMinDeadCapacity, unsigned& cacheMaxDeadCapacity, double& deadDecodedDataDeletionInterval,
+ unsigned& pageCacheCapacity, unsigned long& urlCacheMemoryCapacity, unsigned long& urlCacheDiskCapacity);
// CoreIPC::Connection::Client
void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
diff --git a/WebKit2/WebProcess/mac/WebProcessMac.mm b/WebKit2/WebProcess/mac/WebProcessMac.mm
index 119d242..d117f1f 100644
--- a/WebKit2/WebProcess/mac/WebProcessMac.mm
+++ b/WebKit2/WebProcess/mac/WebProcessMac.mm
@@ -57,7 +57,7 @@ static uint64_t memorySize()
return hostInfo.max_mem;
}
-static unsigned long long volumeFreeSize(NSString *path)
+static uint64_t volumeFreeSize(NSString *path)
{
NSDictionary *fileSystemAttributesDictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:path error:NULL];
return [[fileSystemAttributesDictionary objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
@@ -72,166 +72,28 @@ void WebProcess::platformSetCacheModel(CacheModel cacheModel)
// As a fudge factor, use 1000 instead of 1024, in case the reported byte
// count doesn't align exactly to a megabyte boundary.
uint64_t memSize = memorySize() / 1024 / 1000;
- unsigned long long diskFreeSize = volumeFreeSize(nsurlCacheDirectory.get()) / 1024 / 1000;
- NSURLCache *nsurlCache = [NSURLCache sharedURLCache];
+ uint64_t diskFreeSize = volumeFreeSize(nsurlCacheDirectory.get()) / 1024 / 1000;
unsigned cacheTotalCapacity = 0;
unsigned cacheMinDeadCapacity = 0;
unsigned cacheMaxDeadCapacity = 0;
double deadDecodedDataDeletionInterval = 0;
-
unsigned pageCacheCapacity = 0;
+ unsigned long urlCacheMemoryCapacity = 0;
+ unsigned long urlCacheDiskCapacity = 0;
+
+ calculateCacheSizes(cacheModel, memSize, diskFreeSize,
+ cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
+ pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
- NSUInteger nsurlCacheMemoryCapacity = 0;
- NSUInteger nsurlCacheDiskCapacity = 0;
-
- switch (cacheModel) {
- case CacheModelDocumentViewer: {
- // Page cache capacity (in pages)
- pageCacheCapacity = 0;
-
- // Object cache capacities (in bytes)
- if (memSize >= 2048)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 32 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 16 * 1024 * 1024;
-
- cacheMinDeadCapacity = 0;
- cacheMaxDeadCapacity = 0;
-
- // Foundation memory cache capacity (in bytes)
- nsurlCacheMemoryCapacity = 0;
-
- // Foundation disk cache capacity (in bytes)
- nsurlCacheDiskCapacity = [nsurlCache diskCapacity];
-
- break;
- }
- case CacheModelDocumentBrowser: {
- // Page cache capacity (in pages)
- if (memSize >= 1024)
- pageCacheCapacity = 3;
- else if (memSize >= 512)
- pageCacheCapacity = 2;
- else if (memSize >= 256)
- pageCacheCapacity = 1;
- else
- pageCacheCapacity = 0;
-
- // Object cache capacities (in bytes)
- if (memSize >= 2048)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 32 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 16 * 1024 * 1024;
-
- cacheMinDeadCapacity = cacheTotalCapacity / 8;
- cacheMaxDeadCapacity = cacheTotalCapacity / 4;
-
- // Foundation memory cache capacity (in bytes)
- if (memSize >= 2048)
- nsurlCacheMemoryCapacity = 4 * 1024 * 1024;
- else if (memSize >= 1024)
- nsurlCacheMemoryCapacity = 2 * 1024 * 1024;
- else if (memSize >= 512)
- nsurlCacheMemoryCapacity = 1 * 1024 * 1024;
- else
- nsurlCacheMemoryCapacity = 512 * 1024;
-
- // Foundation disk cache capacity (in bytes)
- if (diskFreeSize >= 16384)
- nsurlCacheDiskCapacity = 50 * 1024 * 1024;
- else if (diskFreeSize >= 8192)
- nsurlCacheDiskCapacity = 40 * 1024 * 1024;
- else if (diskFreeSize >= 4096)
- nsurlCacheDiskCapacity = 30 * 1024 * 1024;
- else
- nsurlCacheDiskCapacity = 20 * 1024 * 1024;
-
- break;
- }
- case CacheModelPrimaryWebBrowser: {
- // Page cache capacity (in pages)
- // (Research indicates that value / page drops substantially after 3 pages.)
- if (memSize >= 2048)
- pageCacheCapacity = 5;
- else if (memSize >= 1024)
- pageCacheCapacity = 4;
- else if (memSize >= 512)
- pageCacheCapacity = 3;
- else if (memSize >= 256)
- pageCacheCapacity = 2;
- else
- pageCacheCapacity = 1;
-
- // Object cache capacities (in bytes)
- // (Testing indicates that value / MB depends heavily on content and
- // browsing pattern. Even growth above 128MB can have substantial
- // value / MB for some content / browsing patterns.)
- if (memSize >= 2048)
- cacheTotalCapacity = 128 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 32 * 1024 * 1024;
-
- cacheMinDeadCapacity = cacheTotalCapacity / 4;
- cacheMaxDeadCapacity = cacheTotalCapacity / 2;
-
- // This code is here to avoid a PLT regression. We can remove it if we
- // can prove that the overall system gain would justify the regression.
- cacheMaxDeadCapacity = max(24u, cacheMaxDeadCapacity);
-
- deadDecodedDataDeletionInterval = 60;
-
- // Foundation memory cache capacity (in bytes)
- // (These values are small because WebCore does most caching itself.)
- if (memSize >= 1024)
- nsurlCacheMemoryCapacity = 4 * 1024 * 1024;
- else if (memSize >= 512)
- nsurlCacheMemoryCapacity = 2 * 1024 * 1024;
- else if (memSize >= 256)
- nsurlCacheMemoryCapacity = 1 * 1024 * 1024;
- else
- nsurlCacheMemoryCapacity = 512 * 1024;
-
- // Foundation disk cache capacity (in bytes)
- if (diskFreeSize >= 16384)
- nsurlCacheDiskCapacity = 175 * 1024 * 1024;
- else if (diskFreeSize >= 8192)
- nsurlCacheDiskCapacity = 150 * 1024 * 1024;
- else if (diskFreeSize >= 4096)
- nsurlCacheDiskCapacity = 125 * 1024 * 1024;
- else if (diskFreeSize >= 2048)
- nsurlCacheDiskCapacity = 100 * 1024 * 1024;
- else if (diskFreeSize >= 1024)
- nsurlCacheDiskCapacity = 75 * 1024 * 1024;
- else
- nsurlCacheDiskCapacity = 50 * 1024 * 1024;
-
- break;
- }
- default:
- ASSERT_NOT_REACHED();
- };
-
- // Don't shrink a big disk cache, since that would cause churn.
- nsurlCacheDiskCapacity = max(nsurlCacheDiskCapacity, [nsurlCache diskCapacity]);
cache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
cache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
pageCache()->setCapacity(pageCacheCapacity);
- [nsurlCache setMemoryCapacity:nsurlCacheMemoryCapacity];
- [nsurlCache setDiskCapacity:nsurlCacheDiskCapacity];
+
+ NSURLCache *nsurlCache = [NSURLCache sharedURLCache];
+ [nsurlCache setMemoryCapacity:urlCacheMemoryCapacity];
+ [nsurlCache setDiskCapacity:max(urlCacheDiskCapacity, [nsurlCache diskCapacity])]; // Don't shrink a big disk cache, since that would cause churn.
}
} // namespace WebKit
diff --git a/WebKit2/WebProcess/win/WebProcessWin.cpp b/WebKit2/WebProcess/win/WebProcessWin.cpp
index 556a267..1ff1d1f 100644
--- a/WebKit2/WebProcess/win/WebProcessWin.cpp
+++ b/WebKit2/WebProcess/win/WebProcessWin.cpp
@@ -38,12 +38,12 @@
#include <wtf/RetainPtr.h>
#endif
-using namespace std;
using namespace WebCore;
+using namespace std;
namespace WebKit {
-static unsigned long long memorySize()
+static uint64_t memorySize()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
@@ -51,188 +51,47 @@ static unsigned long long memorySize()
return statex.ullTotalPhys;
}
-static unsigned long long volumeFreeSize(CFStringRef cfstringPath)
+static uint64_t volumeFreeSize(CFStringRef cfstringPath)
{
WTF::String path(cfstringPath);
ULARGE_INTEGER freeBytesToCaller;
BOOL result = GetDiskFreeSpaceExW((LPCWSTR)path.charactersWithNullTermination(), &freeBytesToCaller, 0, 0);
if (!result)
return 0;
-
return freeBytesToCaller.QuadPart;
}
void WebProcess::platformSetCacheModel(CacheModel cacheModel)
{
#if USE(CFNETWORK)
- RetainPtr<CFURLCacheRef> cfurlCache(AdoptCF, CFURLCacheCopySharedURLCache());
RetainPtr<CFStringRef> cfurlCacheDirectory(AdoptCF, wkCopyFoundationCacheDirectory());
if (!cfurlCacheDirectory)
cfurlCacheDirectory.adoptCF(WebCore::localUserSpecificStorageDirectory().createCFString());
// As a fudge factor, use 1000 instead of 1024, in case the reported byte
// count doesn't align exactly to a megabyte boundary.
- unsigned long long memSize = memorySize() / 1024 / 1000;
- unsigned long long diskFreeSize = volumeFreeSize(cfurlCacheDirectory.get()) / 1024 / 1000;
+ uint64_t memSize = memorySize() / 1024 / 1000;
+ uint64_t diskFreeSize = volumeFreeSize(cfurlCacheDirectory.get()) / 1024 / 1000;
unsigned cacheTotalCapacity = 0;
unsigned cacheMinDeadCapacity = 0;
unsigned cacheMaxDeadCapacity = 0;
double deadDecodedDataDeletionInterval = 0;
-
unsigned pageCacheCapacity = 0;
+ unsigned long urlCacheMemoryCapacity = 0;
+ unsigned long urlCacheDiskCapacity = 0;
- CFIndex cfurlCacheMemoryCapacity = 0;
- CFIndex cfurlCacheDiskCapacity = 0;
-
- switch (cacheModel) {
- case CacheModelDocumentViewer: {
- // Page cache capacity (in pages)
- pageCacheCapacity = 0;
-
- // Object cache capacities (in bytes)
- if (memSize >= 2048)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 32 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 16 * 1024 * 1024;
-
- cacheMinDeadCapacity = 0;
- cacheMaxDeadCapacity = 0;
-
- // Foundation memory cache capacity (in bytes)
- cfurlCacheMemoryCapacity = 0;
-
- // Foundation disk cache capacity (in bytes)
- cfurlCacheDiskCapacity = CFURLCacheDiskCapacity(cfurlCache.get());
-
- break;
- }
- case CacheModelDocumentBrowser: {
- // Page cache capacity (in pages)
- if (memSize >= 1024)
- pageCacheCapacity = 3;
- else if (memSize >= 512)
- pageCacheCapacity = 2;
- else if (memSize >= 256)
- pageCacheCapacity = 1;
- else
- pageCacheCapacity = 0;
-
- // Object cache capacities (in bytes)
- if (memSize >= 2048)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 32 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 16 * 1024 * 1024;
-
- cacheMinDeadCapacity = cacheTotalCapacity / 8;
- cacheMaxDeadCapacity = cacheTotalCapacity / 4;
-
- // Foundation memory cache capacity (in bytes)
- if (memSize >= 2048)
- cfurlCacheMemoryCapacity = 4 * 1024 * 1024;
- else if (memSize >= 1024)
- cfurlCacheMemoryCapacity = 2 * 1024 * 1024;
- else if (memSize >= 512)
- cfurlCacheMemoryCapacity = 1 * 1024 * 1024;
- else
- cfurlCacheMemoryCapacity = 512 * 1024;
-
- // Foundation disk cache capacity (in bytes)
- if (diskFreeSize >= 16384)
- cfurlCacheDiskCapacity = 50 * 1024 * 1024;
- else if (diskFreeSize >= 8192)
- cfurlCacheDiskCapacity = 40 * 1024 * 1024;
- else if (diskFreeSize >= 4096)
- cfurlCacheDiskCapacity = 30 * 1024 * 1024;
- else
- cfurlCacheDiskCapacity = 20 * 1024 * 1024;
-
- break;
- }
- case CacheModelPrimaryWebBrowser: {
- // Page cache capacity (in pages)
- // (Research indicates that value / page drops substantially after 3 pages.)
- if (memSize >= 2048)
- pageCacheCapacity = 5;
- else if (memSize >= 1024)
- pageCacheCapacity = 4;
- else if (memSize >= 512)
- pageCacheCapacity = 3;
- else if (memSize >= 256)
- pageCacheCapacity = 2;
- else
- pageCacheCapacity = 1;
-
- // Object cache capacities (in bytes)
- // (Testing indicates that value / MB depends heavily on content and
- // browsing pattern. Even growth above 128MB can have substantial
- // value / MB for some content / browsing patterns.)
- if (memSize >= 2048)
- cacheTotalCapacity = 128 * 1024 * 1024;
- else if (memSize >= 1536)
- cacheTotalCapacity = 96 * 1024 * 1024;
- else if (memSize >= 1024)
- cacheTotalCapacity = 64 * 1024 * 1024;
- else if (memSize >= 512)
- cacheTotalCapacity = 32 * 1024 * 1024;
-
- cacheMinDeadCapacity = cacheTotalCapacity / 4;
- cacheMaxDeadCapacity = cacheTotalCapacity / 2;
-
- // This code is here to avoid a PLT regression. We can remove it if we
- // can prove that the overall system gain would justify the regression.
- cacheMaxDeadCapacity = max(24u, cacheMaxDeadCapacity);
-
- deadDecodedDataDeletionInterval = 60;
-
- // Foundation memory cache capacity (in bytes)
- // (These values are small because WebCore does most caching itself.)
- if (memSize >= 1024)
- cfurlCacheMemoryCapacity = 4 * 1024 * 1024;
- else if (memSize >= 512)
- cfurlCacheMemoryCapacity = 2 * 1024 * 1024;
- else if (memSize >= 256)
- cfurlCacheMemoryCapacity = 1 * 1024 * 1024;
- else
- cfurlCacheMemoryCapacity = 512 * 1024;
-
- // Foundation disk cache capacity (in bytes)
- if (diskFreeSize >= 16384)
- cfurlCacheDiskCapacity = 175 * 1024 * 1024;
- else if (diskFreeSize >= 8192)
- cfurlCacheDiskCapacity = 150 * 1024 * 1024;
- else if (diskFreeSize >= 4096)
- cfurlCacheDiskCapacity = 125 * 1024 * 1024;
- else if (diskFreeSize >= 2048)
- cfurlCacheDiskCapacity = 100 * 1024 * 1024;
- else if (diskFreeSize >= 1024)
- cfurlCacheDiskCapacity = 75 * 1024 * 1024;
- else
- cfurlCacheDiskCapacity = 50 * 1024 * 1024;
-
- break;
- }
- default:
- ASSERT_NOT_REACHED();
- }
-
- // Don't shrink a big disk cache, since that would cause churn.
- cfurlCacheDiskCapacity = max(cfurlCacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get()));
+ calculateCacheSizes(cacheModel, memSize, diskFreeSize,
+ cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
+ pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
cache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
cache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
pageCache()->setCapacity(pageCacheCapacity);
- CFURLCacheSetMemoryCapacity(cfurlCache.get(), cfurlCacheMemoryCapacity);
- CFURLCacheSetDiskCapacity(cfurlCache.get(), cfurlCacheDiskCapacity);
+ RetainPtr<CFURLCacheRef> cfurlCache(AdoptCF, CFURLCacheCopySharedURLCache());
+ CFURLCacheSetMemoryCapacity(cfurlCache.get(), urlCacheMemoryCapacity);
+ CFURLCacheSetDiskCapacity(cfurlCache.get(), max(urlCacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get()))); // Don't shrink a big disk cache, since that would cause churn.
#endif
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list