Title: [160370] trunk/Source/WebCore
- Revision
- 160370
- Author
- akl...@apple.com
- Date
- 2013-12-10 08:50:49 -0800 (Tue, 10 Dec 2013)
Log Message
Jettison all StyleResolver data on memory pressure.
<https://webkit.org/b/125498>
The StyleResolver can be rebuilt relatively quickly; we already
have an optimization that discards it some time after last use.
If we find ourseles under serious memory pressure, don't wait for
the timer to kick in, throw everything overboard right away.
~5MB progression post-pressure on Membuster3.
Reviewed by Anders Carlsson.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (160369 => 160370)
--- trunk/Source/WebCore/ChangeLog 2013-12-10 16:47:49 UTC (rev 160369)
+++ trunk/Source/WebCore/ChangeLog 2013-12-10 16:50:49 UTC (rev 160370)
@@ -1,3 +1,18 @@
+2013-12-10 Andreas Kling <akl...@apple.com>
+
+ Jettison all StyleResolver data on memory pressure.
+ <https://webkit.org/b/125498>
+
+ The StyleResolver can be rebuilt relatively quickly; we already
+ have an optimization that discards it some time after last use.
+
+ If we find ourseles under serious memory pressure, don't wait for
+ the timer to kick in, throw everything overboard right away.
+
+ ~5MB progression post-pressure on Membuster3.
+
+ Reviewed by Anders Carlsson.
+
2013-12-10 Martin Robinson <mrobin...@igalia.com>
[GTK] [CMake] Add support for building the DOM bindings
Modified: trunk/Source/WebCore/page/Page.cpp (160369 => 160370)
--- trunk/Source/WebCore/page/Page.cpp 2013-12-10 16:47:49 UTC (rev 160369)
+++ trunk/Source/WebCore/page/Page.cpp 2013-12-10 16:50:49 UTC (rev 160370)
@@ -487,6 +487,20 @@
}
}
+void Page::jettisonStyleResolversInAllDocuments()
+{
+ if (!allPages)
+ return;
+
+ for (auto it = allPages->begin(), end = allPages->end(); it != end; ++it) {
+ Page& page = **it;
+ for (Frame* frame = &page.mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ if (Document* document = frame->document())
+ document->clearStyleResolver();
+ }
+ }
+}
+
void Page::refreshPlugins(bool reload)
{
if (!allPages)
Modified: trunk/Source/WebCore/page/Page.h (160369 => 160370)
--- trunk/Source/WebCore/page/Page.h 2013-12-10 16:47:49 UTC (rev 160369)
+++ trunk/Source/WebCore/page/Page.h 2013-12-10 16:50:49 UTC (rev 160370)
@@ -111,6 +111,7 @@
public:
static void updateStyleForAllPagesAfterGlobalChangeInEnvironment();
+ static void jettisonStyleResolversInAllDocuments();
// It is up to the platform to ensure that non-null clients are provided where required.
struct PageClients {
Modified: trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm (160369 => 160370)
--- trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm 2013-12-10 16:47:49 UTC (rev 160369)
+++ trunk/Source/WebCore/platform/mac/MemoryPressureHandlerMac.mm 2013-12-10 16:50:49 UTC (rev 160370)
@@ -30,6 +30,7 @@
#import <WebCore/GCController.h>
#import <WebCore/FontCache.h>
#import <WebCore/MemoryCache.h>
+#import <WebCore/Page.h>
#import <WebCore/PageCache.h>
#import <WebCore/LayerPool.h>
#import <WebCore/ScrollingThread.h>
@@ -163,6 +164,8 @@
clearWidthCaches();
+ Page::jettisonStyleResolversInAllDocuments();
+
gcController().discardAllCompiledCode();
// FastMalloc has lock-free thread specific caches that can only be cleared from the thread itself.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes