GC soon after responding to fake memory pressure.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 18 Jan 2014 16:50:13 +0000 (16:50 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 18 Jan 2014 16:50:13 +0000 (16:50 +0000)
<https://webkit.org/b/127210>

Ask JSC to garbage collect "soon" after handling the fake memory
pressure signal on Mac. This seems to stabilize the post-pressure
numbers on Membuster3 a bit on my laptop. The difference is mostly
made up of JSC::CodeBlock objects.

Reviewed by Geoffrey Garen.

* platform/mac/MemoryPressureHandlerMac.mm:
(WebCore::MemoryPressureHandler::install):

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

Source/WebCore/ChangeLog
Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm

index 5a41d0434a879a0af22cb6b75fe15a823844aaed..1e3e8403d835387400e1beb19e9e9e5202f5a124 100644 (file)
@@ -1,3 +1,18 @@
+2014-01-17  Andreas Kling  <akling@apple.com>
+
+        GC soon after responding to fake memory pressure.
+        <https://webkit.org/b/127210>
+
+        Ask JSC to garbage collect "soon" after handling the fake memory
+        pressure signal on Mac. This seems to stabilize the post-pressure
+        numbers on Membuster3 a bit on my laptop. The difference is mostly
+        made up of JSC::CodeBlock objects.
+
+        Reviewed by Geoffrey Garen.
+
+        * platform/mac/MemoryPressureHandlerMac.mm:
+        (WebCore::MemoryPressureHandler::install):
+
 2014-01-18  Anders Carlsson  <andersca@apple.com>
 
         Remove files only used by the threaded HTML parser
index 9163653decc3308e41ae3c90fe575b4bfa373ea5..115658d7e37bf87a7a2c7fc5691746ff747f0738 100644 (file)
@@ -79,8 +79,13 @@ void MemoryPressureHandler::install()
         }
     });
 
-    notify_register_dispatch("org.WebKit.lowMemory", &_notifyToken,
-         dispatch_get_main_queue(), ^(int) { memoryPressureHandler().respondToMemoryPressure();});
+    // Allow simulation of memory pressure with "notifyutil -p org.WebKit.lowMemory"
+    // Note that we also ask JSC to garbage collect some time soon, unlike the real memory pressure path.
+    // This is to get more stable numbers in memory benchmarks using this mechanism.
+    notify_register_dispatch("org.WebKit.lowMemory", &_notifyToken, dispatch_get_main_queue(), ^(int) {
+        memoryPressureHandler().respondToMemoryPressure();
+        gcController().garbageCollectSoon();
+    });
 
     m_installed = true;
 }