Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index ab1e4efa16585612da3153947a4803a48e31b440..9434464ee0b25904c59243bbd9873e9233bc785f 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -55,6 +55,7 @@ |
#include "core/css/StyleSheetList.h" |
#include "core/css/resolver/FontBuilder.h" |
#include "core/css/resolver/StyleResolver.h" |
+#include "core/css/resolver/StyleResolverStats.h" |
#include "core/dom/AddConsoleMessageTask.h" |
#include "core/dom/Attr.h" |
#include "core/dom/CDATASection.h" |
@@ -1691,6 +1692,11 @@ void Document::recalcStyle(StyleRecalcChange change) |
if (styleChangeType() >= SubtreeStyleChange) |
change = Force; |
+ // FIXME: Cannot access the styleResolver() before calling styleForDocument below because |
+ // apparently the StyleResolver's constructor has side effects. We should fix it. |
+ // See printing/setPrinting.html, printing/width-overflow.html though they only fail on |
+ // mac when accessing the resolver by what appears to be a viewport size difference. |
+ |
if (change == Force || (change >= Inherit && shouldDisplaySeamlesslyWithParent())) { |
m_hasNodesWithPlaceholderStyle = false; |
RefPtr<RenderStyle> documentStyle = StyleResolver::styleForDocument(*this, m_styleResolver ? m_styleResolver->fontSelector() : 0); |
@@ -1701,12 +1707,23 @@ void Document::recalcStyle(StyleRecalcChange change) |
clearNeedsStyleRecalc(); |
+ // Uncomment to enable printing of statistics about style sharing and the matched property cache. |
+ // Optionally pass StyleResolver::ReportSlowStats to print numbers that require crawling the |
+ // entire DOM (where collecting them is very slow). |
+ // FIXME: Expose this as a runtime flag. |
+ // styleResolver()->enableStats(/*StyleResolver::ReportSlowStats*/); |
+ |
+ if (StyleResolverStats* stats = styleResolver()->stats()) |
+ stats->reset(); |
+ |
if (Element* documentElement = this->documentElement()) { |
inheritHtmlAndBodyElementStyles(change); |
if (shouldRecalcStyle(change, documentElement)) |
documentElement->recalcStyle(change); |
} |
+ styleResolver()->printStats(); |
+ |
view()->updateCompositingLayersAfterStyleChange(); |
clearChildNeedsStyleRecalc(); |
@@ -1724,9 +1741,6 @@ void Document::recalcStyle(StyleRecalcChange change) |
} |
} |
- STYLE_STATS_PRINT(); |
- STYLE_STATS_CLEAR(); |
- |
InspectorInstrumentation::didRecalculateStyle(cookie); |
// As a result of the style recalculation, the currently hovered element might have been |