Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Flush style sharing cache on parent mismatch.
  • Loading branch information
6112 committed Sep 18, 2016
1 parent 83f687a commit 5ccce59
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions components/style/matching.rs
Expand Up @@ -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,
Expand Down Expand Up @@ -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 |
Expand All @@ -761,6 +767,9 @@ pub trait ElementMatchMethods : TElement {
}
}
}
if should_clear_cache {
style_sharing_candidate_cache.clear();
}

StyleSharingResult::CannotShare
}
Expand Down

0 comments on commit 5ccce59

Please sign in to comment.