mirror of
https://github.com/servo/servo.git
synced 2025-06-24 17:14:33 +01:00
style: Also cache the class list in the CurrentElementInfo.
This patch also removes all notion of style sharing from matching.rs, which is nice.
This commit is contained in:
parent
abcc9b301c
commit
03952a0c27
5 changed files with 160 additions and 114 deletions
|
@ -23,7 +23,7 @@ use rule_tree::{CascadeLevel, StrongRuleNode};
|
|||
use selector_parser::{PseudoElement, RestyleDamage, SelectorImpl};
|
||||
use selectors::matching::{ElementSelectorFlags, MatchingContext, MatchingMode, StyleRelations};
|
||||
use selectors::matching::{VisitedHandlingMode, AFFECTED_BY_PSEUDO_ELEMENTS};
|
||||
use sharing::{StyleSharingBehavior, StyleSharingResult};
|
||||
use sharing::StyleSharingBehavior;
|
||||
use stylearc::Arc;
|
||||
use stylist::{ApplicableDeclarationList, RuleInclusion};
|
||||
|
||||
|
@ -858,7 +858,7 @@ pub trait MatchMethods : TElement {
|
|||
let revalidation_match_results = context.thread_local
|
||||
.current_element_info
|
||||
.as_mut().unwrap()
|
||||
.revalidation_match_results
|
||||
.cached_style_sharing_data
|
||||
.take();
|
||||
context.thread_local
|
||||
.style_sharing_candidate_cache
|
||||
|
@ -1341,30 +1341,6 @@ pub trait MatchMethods : TElement {
|
|||
false
|
||||
}
|
||||
|
||||
/// Attempts to share a style with another node. This method is unsafe
|
||||
/// because it depends on the `style_sharing_candidate_cache` having only
|
||||
/// live nodes in it, and we have no way to guarantee that at the type
|
||||
/// system level yet.
|
||||
unsafe fn share_style_if_possible(&self,
|
||||
context: &mut StyleContext<Self>,
|
||||
data: &mut ElementData)
|
||||
-> StyleSharingResult {
|
||||
let shared_context = &context.shared;
|
||||
let current_element_info =
|
||||
context.thread_local.current_element_info.as_mut().unwrap();
|
||||
let selector_flags_map = &mut context.thread_local.selector_flags;
|
||||
let bloom_filter = context.thread_local.bloom_filter.filter();
|
||||
|
||||
context.thread_local
|
||||
.style_sharing_candidate_cache
|
||||
.share_style_if_possible(shared_context,
|
||||
current_element_info,
|
||||
selector_flags_map,
|
||||
bloom_filter,
|
||||
*self,
|
||||
data)
|
||||
}
|
||||
|
||||
/// Given the old and new style of this element, and whether it's a
|
||||
/// pseudo-element, compute the restyle damage used to determine which
|
||||
/// kind of layout or painting operations we'll need.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue