Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Unified Diff: Source/core/css/resolver/SharedStyleFinder.cpp

Issue 34623009: Revamp style resolver stats (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix stats for mac, crazy StyleResolver constructor side effects Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/core.gypi ('k') | Source/core/css/resolver/StyleResolver.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/resolver/SharedStyleFinder.cpp
diff --git a/Source/core/css/resolver/SharedStyleFinder.cpp b/Source/core/css/resolver/SharedStyleFinder.cpp
index 2e12f24fa623bb09ac28151690482a381cfdc9ff..1b214a1dc29a39e01447696296e4a0fc1dbc05c4 100644
--- a/Source/core/css/resolver/SharedStyleFinder.cpp
+++ b/Source/core/css/resolver/SharedStyleFinder.cpp
@@ -32,6 +32,7 @@
#include "HTMLNames.h"
#include "XMLNames.h"
#include "core/css/resolver/StyleResolver.h"
+#include "core/css/resolver/StyleResolverStats.h"
#include "core/dom/ContainerNode.h"
#include "core/dom/Document.h"
#include "core/dom/Element.h"
@@ -240,7 +241,7 @@ bool SharedStyleFinder::canShareStyleWithElement(Element& candidate) const
bool SharedStyleFinder::documentContainsValidCandidate() const
{
for (Element* element = document().documentElement(); element; element = ElementTraversal::next(*element)) {
- if (canShareStyleWithElement(*element))
+ if (element->supportsStyleSharing() && canShareStyleWithElement(*element))
return true;
}
return false;
@@ -274,38 +275,40 @@ bool SharedStyleFinder::matchesRuleSet(RuleSet* ruleSet)
RenderStyle* SharedStyleFinder::findSharedStyle()
{
- STYLE_STATS_ADD_SEARCH();
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleLookups);
if (!element().supportsStyleSharing())
return 0;
- STYLE_STATS_ADD_ELEMENT_ELIGIBLE_FOR_SHARING();
-
// Cache whether context.element() is affected by any known class selectors.
m_elementAffectedByClassRules = element().hasClass() && classNamesAffectedByRules(element().classNames());
Element* shareElement = findElementForStyleSharing();
-#ifdef STYLE_STATS
- // FIXME: these stats don't to into account whether or not sibling/attribute
- // rules prevent these nodes from actually sharing
- if (shareElement)
- STYLE_STATS_ADD_SEARCH_FOUND_SIBLING_FOR_SHARING();
- else if (documentContainsValidCandidate())
- STYLE_STATS_ADD_SEARCH_MISSED_SHARING();
-#endif
-
- // If we have exhausted all our budget or our cousins.
- if (!shareElement)
+ if (!shareElement) {
+ if (m_styleResolver.stats() && m_styleResolver.stats()->printMissedCandidateCount && documentContainsValidCandidate())
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleMissed);
+ return 0;
+ }
+
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleFound);
+
+ if (matchesRuleSet(m_siblingRuleSet)) {
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedBySiblingRules);
return 0;
+ }
- // Can't share if sibling or attribute rules apply. This is checked at the end as it should rarely fail.
- if (matchesRuleSet(m_siblingRuleSet) || matchesRuleSet(m_uncommonAttributeRuleSet))
+ if (matchesRuleSet(m_uncommonAttributeRuleSet)) {
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedByUncommonAttributeRules);
return 0;
+ }
+
// Tracking child index requires unique style for each node. This may get set by the sibling rule match above.
- if (!element().parentElement()->childrenSupportStyleSharing())
+ if (!element().parentElement()->childrenSupportStyleSharing()) {
+ INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedByParent);
return 0;
- STYLE_STATS_ADD_STYLE_SHARED();
+ }
+
return shareElement->renderStyle();
}
« no previous file with comments | « Source/core/core.gypi ('k') | Source/core/css/resolver/StyleResolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698