Title: [167793] trunk/Source
Revision
167793
Author
[email protected]
Date
2014-04-25 00:19:31 -0700 (Fri, 25 Apr 2014)

Log Message

[iOS WebKit2] Enable optimization to mmap downloaded resources once they become file-backed.
<https://webkit.org/b/132171>
<rdar://problem/16720733>

Source/WebCore:
Add a missing export for the USE(CFNETWORK) + WebKit2 combo.

Reviewed by Antti Koivisto.

* WebCore.exp.in:

Source/WebKit2:
Implement a CFNetwork-based version of NetworkResourceLoader::willCacheResponseAsync()
and activate the DiskCacheMonitor code path. This means that once resources go into
file system cache, we get notified and mmap them from disk, saving heaps of memory.

Reviewed by Antti Koivisto.

* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/mac/DiskCacheMonitor.mm:
* NetworkProcess/mac/NetworkResourceLoaderMac.mm:
(WebKit::NetworkResourceLoader::willCacheResponseAsync):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (167792 => 167793)


--- trunk/Source/WebCore/ChangeLog	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebCore/ChangeLog	2014-04-25 07:19:31 UTC (rev 167793)
@@ -1,3 +1,15 @@
+2014-04-24  Andreas Kling  <[email protected]>
+
+        [iOS WebKit2] Enable optimization to mmap downloaded resources once they become file-backed.
+        <https://webkit.org/b/132171>
+        <rdar://problem/16720733>
+
+        Add a missing export for the USE(CFNETWORK) + WebKit2 combo.
+
+        Reviewed by Antti Koivisto.
+
+        * WebCore.exp.in:
+
 2014-04-24  Darin Adler  <[email protected]>
 
         FrameLoader::checkCompleted can hit the "ref'ing while destroyed" assertion

Modified: trunk/Source/WebCore/WebCore.exp.in (167792 => 167793)


--- trunk/Source/WebCore/WebCore.exp.in	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebCore/WebCore.exp.in	2014-04-25 07:19:31 UTC (rev 167793)
@@ -2870,6 +2870,8 @@
 
 #if !USE(CFNETWORK)
 __ZN7WebCore14ResourceHandle25continueWillCacheResponseEP19NSCachedURLResponse
+#else
+__ZN7WebCore14ResourceHandle25continueWillCacheResponseEPK20_CFCachedURLResponse
 #endif
 
 #if ENABLE(CONTEXT_MENUS)

Modified: trunk/Source/WebKit2/ChangeLog (167792 => 167793)


--- trunk/Source/WebKit2/ChangeLog	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebKit2/ChangeLog	2014-04-25 07:19:31 UTC (rev 167793)
@@ -1,5 +1,22 @@
 2014-04-24  Andreas Kling  <[email protected]>
 
+        [iOS WebKit2] Enable optimization to mmap downloaded resources once they become file-backed.
+        <https://webkit.org/b/132171>
+        <rdar://problem/16720733>
+
+        Implement a CFNetwork-based version of NetworkResourceLoader::willCacheResponseAsync()
+        and activate the DiskCacheMonitor code path. This means that once resources go into
+        file system cache, we get notified and mmap them from disk, saving heaps of memory.
+
+        Reviewed by Antti Koivisto.
+
+        * NetworkProcess/NetworkResourceLoader.h:
+        * NetworkProcess/mac/DiskCacheMonitor.mm:
+        * NetworkProcess/mac/NetworkResourceLoaderMac.mm:
+        (WebKit::NetworkResourceLoader::willCacheResponseAsync):
+
+2014-04-24  Andreas Kling  <[email protected]>
+
         [iOS WebKit2] RemoteLayerTreeDrawingArea should force CA to garbage collect surfaces.
         <https://webkit.org/b/132160>
         <rdar://problem/16110687>

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h (167792 => 167793)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2014-04-25 07:19:31 UTC (rev 167793)
@@ -111,10 +111,13 @@
 
 #if PLATFORM(COCOA)
     static size_t fileBackedResourceMinimumSize();
-#if !PLATFORM(IOS)
+
+#if USE(CFNETWORK)
+    virtual void willCacheResponseAsync(WebCore::ResourceHandle*, CFCachedURLResponseRef) override;
+#else
     virtual void willCacheResponseAsync(WebCore::ResourceHandle*, NSCachedURLResponse *) override;
 #endif
-#endif // PLATFORM(MAC)
+#endif
 
     // Message handlers.
     void didReceiveNetworkResourceLoaderMessage(IPC::Connection*, IPC::MessageDecoder&);

Modified: trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm (167792 => 167793)


--- trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebKit2/NetworkProcess/mac/DiskCacheMonitor.mm	2014-04-25 07:19:31 UTC (rev 167793)
@@ -37,7 +37,7 @@
 #endif
 #endif
 
-#if !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
+#if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090)
 
 typedef void (^CFCachedURLResponseCallBackBlock)(CFCachedURLResponseRef);
 extern "C" void _CFCachedURLResponseSetBecameFileBackedCallBackBlock(CFCachedURLResponseRef, CFCachedURLResponseCallBackBlock, dispatch_queue_t);
@@ -107,4 +107,4 @@
 
 } // namespace WebKit
 
-#endif // !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
+#endif

Modified: trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm (167792 => 167793)


--- trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm	2014-04-25 06:28:33 UTC (rev 167792)
+++ trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm	2014-04-25 07:19:31 UTC (rev 167793)
@@ -103,6 +103,18 @@
     return SharedMemory::systemPageSize();
 }
 
+#if USE(CFNETWORK)
+void NetworkResourceLoader::willCacheResponseAsync(ResourceHandle* handle, CFCachedURLResponseRef cfResponse)
+{
+    ASSERT_UNUSED(handle, handle == m_handle);
+
+    if (m_bytesReceived >= fileBackedResourceMinimumSize())
+        DiskCacheMonitor::monitorFileBackingStoreCreation(cfResponse, this);
+
+    m_handle->continueWillCacheResponse(cfResponse);
+}
+#endif
+
 #if !PLATFORM(IOS)
 void NetworkResourceLoader::willCacheResponseAsync(ResourceHandle* handle, NSCachedURLResponse *nsResponse)
 {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to