Changeset 279242 in webkit
- Timestamp:
- Jun 24, 2021, 12:14:50 PM (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
r279240 r279242 1 2021-06-24 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, reverting r275633. 4 https://bugs.webkit.org/show_bug.cgi?id=227373 5 6 Revert to see if this was the cause for some crashes seen 7 lately 8 9 Reverted changeset: 10 11 "Reduce Vector<> wasted capacity in some RuleSet code" 12 https://bugs.webkit.org/show_bug.cgi?id=224160 13 https://trac.webkit.org/changeset/275633 14 1 15 2021-06-24 Dmitry Kalinkin <dmitry.kalinkin+webkit@gmail.com> 2 16 -
trunk/Source/WebCore/style/RuleSet.cpp
r278253 r279242 314 314 auto mediaQueryCollector = MediaQueryCollector { evaluator }; 315 315 addRulesFromSheet(sheet, mediaQueryCollector, nullptr, AddRulesMode::Normal); 316 317 if (m_autoShrinkToFitEnabled)318 shrinkToFit();319 316 } 320 317 … … 337 334 m_hasViewportDependentMediaQueries = mediaQueryCollector.hasViewportDependentMediaQueries; 338 335 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(); 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); 349 344 } 350 345 … … 361 356 362 357 addChildRules(sheet.childRules(), mediaQueryCollector, resolver, mode); 358 359 if (m_autoShrinkToFitEnabled && mode == AddRulesMode::Normal) 360 shrinkToFit(); 363 361 } 364 362 … … 418 416 ruleSet->addRule(*feature.styleRule, feature.selectorIndex, feature.selectorListIndex); 419 417 } 420 ruleSet->shrinkToFit();421 418 return ruleSet; 422 419 }).iterator->value; … … 476 473 } 477 474 478 static inline void shrinkDynamicRules(Vector<RuleSet::DynamicMediaQueryRules>& dynamicRules)479 {480 for (auto& rule : dynamicRules)481 rule.shrinkToFit();482 483 dynamicRules.shrinkToFit();484 }485 486 475 void RuleSet::shrinkToFit() 487 476 { … … 491 480 shrinkMapVectorsToFit(m_tagLowercaseLocalNameRules); 492 481 shrinkMapVectorsToFit(m_shadowPseudoElementRules); 493 494 482 m_linkPseudoClassRules.shrinkToFit(); 495 483 #if ENABLE(VIDEO) … … 498 486 m_hostPseudoClassRules.shrinkToFit(); 499 487 m_slottedPseudoElementRules.shrinkToFit(); 500 m_partPseudoElementRules.shrinkToFit();501 488 m_focusPseudoClassRules.shrinkToFit(); 502 489 m_universalRules.shrinkToFit(); 503 504 490 m_pageRules.shrinkToFit(); 505 491 m_features.shrinkToFit(); 506 507 shrinkDynamicRules(m_dynamicMediaQueryRules);508 492 } 509 493 -
trunk/Source/WebCore/style/RuleSet.h
r278253 r279242 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 }86 79 }; 87 80 … … 161 154 template<typename Function> void traverseRuleDatas(Function&&); 162 155 156 163 157 AtomRuleMap m_idRules; 164 158 AtomRuleMap m_classRules; … … 176 170 RuleDataVector m_universalRules; 177 171 Vector<StyleRulePage*> m_pageRules; 178 RuleFeatureSet m_features;179 Vector<DynamicMediaQueryRules> m_dynamicMediaQueryRules;180 HashMap<Vector<size_t>, Ref<const RuleSet>> m_mediaQueryInvalidationRuleSetCache;181 172 unsigned m_ruleCount { 0 }; 182 173 bool m_hasHostPseudoClassRulesMatchingInShadowTree { false }; 183 174 bool m_autoShrinkToFitEnabled { true }; 175 RuleFeatureSet m_features; 184 176 bool m_hasViewportDependentMediaQueries { false }; 177 Vector<DynamicMediaQueryRules> m_dynamicMediaQueryRules; 178 HashMap<Vector<size_t>, Ref<const RuleSet>> m_mediaQueryInvalidationRuleSetCache; 185 179 }; 186 180
Note:
See TracChangeset
for help on using the changeset viewer.