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

Side by Side Diff: Source/core/css/resolver/SharedStyleFinder.cpp

Issue 1278103002: Oilpan: tidy up some inter-stack object references. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: use STACK_ALLOCATED() more often Created 5 years, 4 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 { 278 {
279 for (Element& element : ElementTraversal::startsAt(document().documentElemen t())) { 279 for (Element& element : ElementTraversal::startsAt(document().documentElemen t())) {
280 if (element.supportsStyleSharing() && canShareStyleWithElement(element)) 280 if (element.supportsStyleSharing() && canShareStyleWithElement(element))
281 return true; 281 return true;
282 } 282 }
283 return false; 283 return false;
284 } 284 }
285 285
286 inline Element* SharedStyleFinder::findElementForStyleSharing() const 286 inline Element* SharedStyleFinder::findElementForStyleSharing() const
287 { 287 {
288 StyleSharingList& styleSharingList = m_styleResolver.styleSharingList(); 288 StyleSharingList& styleSharingList = m_styleResolver->styleSharingList();
289 for (StyleSharingList::iterator it = styleSharingList.begin(); it != styleSh aringList.end(); ++it) { 289 for (StyleSharingList::iterator it = styleSharingList.begin(); it != styleSh aringList.end(); ++it) {
290 Element& candidate = **it; 290 Element& candidate = **it;
291 if (!canShareStyleWithElement(candidate)) 291 if (!canShareStyleWithElement(candidate))
292 continue; 292 continue;
293 if (it != styleSharingList.begin()) { 293 if (it != styleSharingList.begin()) {
294 // Move the element to the front of the LRU 294 // Move the element to the front of the LRU
295 styleSharingList.remove(it); 295 styleSharingList.remove(it);
296 styleSharingList.prepend(&candidate); 296 styleSharingList.prepend(&candidate);
297 } 297 }
298 return &candidate; 298 return &candidate;
299 } 299 }
300 m_styleResolver.addToStyleSharingList(element()); 300 m_styleResolver->addToStyleSharingList(element());
301 return 0; 301 return 0;
302 } 302 }
303 303
304 bool SharedStyleFinder::matchesRuleSet(RuleSet* ruleSet) 304 bool SharedStyleFinder::matchesRuleSet(RuleSet* ruleSet)
305 { 305 {
306 if (!ruleSet) 306 if (!ruleSet)
307 return false; 307 return false;
308 ElementRuleCollector collector(m_context, m_styleResolver.selectorFilter()); 308 ElementRuleCollector collector(m_context, m_styleResolver->selectorFilter()) ;
309 return collector.hasAnyMatchingRules(ruleSet); 309 return collector.hasAnyMatchingRules(ruleSet);
310 } 310 }
311 311
312 ComputedStyle* SharedStyleFinder::findSharedStyle() 312 ComputedStyle* SharedStyleFinder::findSharedStyle()
313 { 313 {
314 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleLookups, 1); 314 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleLookups, 1);
315 315
316 if (!element().supportsStyleSharing()) 316 if (!element().supportsStyleSharing())
317 return 0; 317 return 0;
318 318
319 // Cache whether context.element() is affected by any known class selectors. 319 // Cache whether context.element() is affected by any known class selectors.
320 m_elementAffectedByClassRules = element().hasClass() && classNamesAffectedBy Rules(element().classNames()); 320 m_elementAffectedByClassRules = element().hasClass() && classNamesAffectedBy Rules(element().classNames());
321 321
322 Element* shareElement = findElementForStyleSharing(); 322 Element* shareElement = findElementForStyleSharing();
323 323
324 if (!shareElement) { 324 if (!shareElement) {
325 if (m_styleResolver.stats() && m_styleResolver.stats()->allCountersEnabl ed() && documentContainsValidCandidate()) 325 if (m_styleResolver->stats() && m_styleResolver->stats()->allCountersEna bled() && documentContainsValidCandidate())
326 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleMissed, 1) ; 326 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleMissed, 1 );
327 return 0; 327 return 0;
328 } 328 }
329 329
330 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleFound, 1); 330 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleFound, 1);
331 331
332 if (matchesRuleSet(m_siblingRuleSet)) { 332 if (matchesRuleSet(m_siblingRuleSet)) {
333 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedBySibl ingRules, 1); 333 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleRejectedBySib lingRules, 1);
334 return 0; 334 return 0;
335 } 335 }
336 336
337 if (matchesRuleSet(m_uncommonAttributeRuleSet)) { 337 if (matchesRuleSet(m_uncommonAttributeRuleSet)) {
338 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedByUnco mmonAttributeRules, 1); 338 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleRejectedByUnc ommonAttributeRules, 1);
339 return 0; 339 return 0;
340 } 340 }
341 341
342 // Tracking child index requires unique style for each node. This may get se t by the sibling rule match above. 342 // Tracking child index requires unique style for each node. This may get se t by the sibling rule match above.
343 if (!element().parentElementOrShadowRoot()->childrenSupportStyleSharing()) { 343 if (!element().parentElementOrShadowRoot()->childrenSupportStyleSharing()) {
344 INCREMENT_STYLE_STATS_COUNTER(m_styleResolver, sharedStyleRejectedByPare nt, 1); 344 INCREMENT_STYLE_STATS_COUNTER(*m_styleResolver, sharedStyleRejectedByPar ent, 1);
345 return 0; 345 return 0;
346 } 346 }
347 347
348 return shareElement->mutableComputedStyle(); 348 return shareElement->mutableComputedStyle();
349 } 349 }
350 350
351 } 351 }
OLDNEW
« no previous file with comments | « Source/core/css/resolver/SharedStyleFinder.h ('k') | Source/core/css/resolver/StyleResolverParentScope.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698