Changeset 280638 in webkit
- Timestamp:
- Aug 4, 2021, 10:39:50 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
style/RuleSet.cpp (modified) (7 diffs)
-
style/RuleSet.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r280633 r280638 1 2021-08-04 Antti Koivisto <antti@apple.com> 2 3 Reduce Vector<> wasted capacity in some RuleSet code 4 https://bugs.webkit.org/show_bug.cgi?id=224160 5 <rdar://problem/76369555> 6 7 Unreviewed, reverting revert r279242. 8 9 Reland as this was not related to the crashes seen. 10 11 * style/RuleSet.cpp: 12 (WebCore::Style::RuleSet::addRulesFromSheet): 13 (WebCore::Style::RuleSet::evaluateDynamicMediaQueryRules): 14 (WebCore::Style::shrinkDynamicRules): 15 (WebCore::Style::RuleSet::shrinkToFit): 16 * style/RuleSet.h: 17 1 18 2021-08-04 Andres Gonzalez <andresg_22@apple.com> 2 19 -
trunk/Source/WebCore/style/RuleSet.cpp
r279242 r280638 314 314 auto mediaQueryCollector = MediaQueryCollector { evaluator }; 315 315 addRulesFromSheet(sheet, mediaQueryCollector, nullptr, AddRulesMode::Normal); 316 317 if (m_autoShrinkToFitEnabled) 318 shrinkToFit(); 316 319 } 317 320 … … 334 337 m_hasViewportDependentMediaQueries = mediaQueryCollector.hasViewportDependentMediaQueries; 335 338 336 if (mediaQueryCollector.dynamicMediaQueryRules.isEmpty()) 337 return; 338 339 auto firstNewIndex = m_dynamicMediaQueryRules.size(); 340 m_dynamicMediaQueryRules.appendVector(WTFMove(mediaQueryCollector.dynamicMediaQueryRules)); 341 342 // Set the initial values. 343 evaluateDynamicMediaQueryRules(evaluator, firstNewIndex); 339 if (!mediaQueryCollector.dynamicMediaQueryRules.isEmpty()) { 340 auto firstNewIndex = m_dynamicMediaQueryRules.size(); 341 m_dynamicMediaQueryRules.appendVector(WTFMove(mediaQueryCollector.dynamicMediaQueryRules)); 342 343 // Set the initial values. 344 evaluateDynamicMediaQueryRules(evaluator, firstNewIndex); 345 } 346 347 if (m_autoShrinkToFitEnabled) 348 shrinkToFit(); 344 349 } 345 350 … … 356 361 357 362 addChildRules(sheet.childRules(), mediaQueryCollector, resolver, mode); 358 359 if (m_autoShrinkToFitEnabled && mode == AddRulesMode::Normal)360 shrinkToFit();361 363 } 362 364 … … 416 418 ruleSet->addRule(*feature.styleRule, feature.selectorIndex, feature.selectorListIndex); 417 419 } 420 ruleSet->shrinkToFit(); 418 421 return ruleSet; 419 422 }).iterator->value; … … 473 476 } 474 477 478 static inline void shrinkDynamicRules(Vector<RuleSet::DynamicMediaQueryRules>& dynamicRules) 479 { 480 for (auto& rule : dynamicRules) 481 rule.shrinkToFit(); 482 483 dynamicRules.shrinkToFit(); 484 } 485 475 486 void RuleSet::shrinkToFit() 476 487 { … … 480 491 shrinkMapVectorsToFit(m_tagLowercaseLocalNameRules); 481 492 shrinkMapVectorsToFit(m_shadowPseudoElementRules); 493 482 494 m_linkPseudoClassRules.shrinkToFit(); 483 495 #if ENABLE(VIDEO) … … 486 498 m_hostPseudoClassRules.shrinkToFit(); 487 499 m_slottedPseudoElementRules.shrinkToFit(); 500 m_partPseudoElementRules.shrinkToFit(); 488 501 m_focusPseudoClassRules.shrinkToFit(); 489 502 m_universalRules.shrinkToFit(); 503 490 504 m_pageRules.shrinkToFit(); 491 505 m_features.shrinkToFit(); 506 507 shrinkDynamicRules(m_dynamicMediaQueryRules); 492 508 } 493 509 -
trunk/Source/WebCore/style/RuleSet.h
r279365 r280638 77 77 bool requiresFullReset { false }; 78 78 bool result { true }; 79 80 void shrinkToFit() 81 { 82 mediaQuerySets.shrinkToFit(); 83 affectedRulePositions.shrinkToFit(); 84 ruleFeatures.shrinkToFit(); 85 } 79 86 }; 80 87 … … 154 161 template<typename Function> void traverseRuleDatas(Function&&); 155 162 156 157 163 AtomRuleMap m_idRules; 158 164 AtomRuleMap m_classRules; … … 170 176 RuleDataVector m_universalRules; 171 177 Vector<StyleRulePage*> m_pageRules; 178 RuleFeatureSet m_features; 179 Vector<DynamicMediaQueryRules> m_dynamicMediaQueryRules; 180 HashMap<Vector<size_t>, Ref<const RuleSet>> m_mediaQueryInvalidationRuleSetCache; 172 181 unsigned m_ruleCount { 0 }; 173 182 bool m_hasHostPseudoClassRulesMatchingInShadowTree { false }; 174 183 bool m_autoShrinkToFitEnabled { true }; 175 RuleFeatureSet m_features;176 184 bool m_hasViewportDependentMediaQueries { false }; 177 Vector<DynamicMediaQueryRules> m_dynamicMediaQueryRules;178 HashMap<Vector<size_t>, Ref<const RuleSet>> m_mediaQueryInvalidationRuleSetCache;179 185 }; 180 186
Note:
See TracChangeset
for help on using the changeset viewer.