mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Flush style sharing cache on parent mismatch.
This commit is contained in:
parent
83f687a7be
commit
5ccce5911f
1 changed files with 9 additions and 0 deletions
|
@ -708,6 +708,7 @@ pub trait ElementMatchMethods : TElement {
|
|||
_ => return StyleSharingResult::CannotShare,
|
||||
};
|
||||
|
||||
let mut should_clear_cache = false;
|
||||
for (i, &mut (ref mut candidate, ())) in style_sharing_candidate_cache.iter_mut().enumerate() {
|
||||
let sharing_result = self.share_style_with_candidate_if_possible(parent,
|
||||
shared_context,
|
||||
|
@ -750,6 +751,11 @@ pub trait ElementMatchMethods : TElement {
|
|||
// Cache miss, let's see what kind of failure to decide
|
||||
// whether we keep trying or not.
|
||||
match miss {
|
||||
// Cache miss because of parent, clear the candidate cache.
|
||||
CacheMiss::Parent => {
|
||||
should_clear_cache = true;
|
||||
break;
|
||||
},
|
||||
// Too expensive failure, give up, we don't want another
|
||||
// one of these.
|
||||
CacheMiss::CommonStyleAffectingAttributes |
|
||||
|
@ -761,6 +767,9 @@ pub trait ElementMatchMethods : TElement {
|
|||
}
|
||||
}
|
||||
}
|
||||
if should_clear_cache {
|
||||
style_sharing_candidate_cache.clear();
|
||||
}
|
||||
|
||||
StyleSharingResult::CannotShare
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue