Auto merge of #16874 - bholley:applicable_declarations_smallvec, r=emilio

Use a SmallVec when gathering applicable declarations

https://bugzilla.mozilla.org/show_bug.cgi?id=1364952

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16874)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-05-15 23:19:43 -05:00 committed by GitHub
commit 7ca393a960
2 changed files with 16 additions and 9 deletions

View file

@ -29,7 +29,7 @@ use selectors::matching::AFFECTED_BY_PSEUDO_ELEMENTS;
use shared_lock::StylesheetGuards;
use sink::ForgetfulSink;
use stylearc::Arc;
use stylist::ApplicableDeclarationBlock;
use stylist::ApplicableDeclarationList;
/// The way a style should be inherited.
enum InheritMode {
@ -865,11 +865,11 @@ trait PrivateMatchMethods: TElement {
}
fn compute_rule_node<E: TElement>(rule_tree: &RuleTree,
applicable_declarations: &mut Vec<ApplicableDeclarationBlock>,
applicable_declarations: &mut ApplicableDeclarationList,
guards: &StylesheetGuards)
-> StrongRuleNode
{
let rules = applicable_declarations.drain(..).map(|d| (d.source, d.level));
let rules = applicable_declarations.drain().map(|d| (d.source, d.level));
let rule_node = rule_tree.insert_ordered_rules_with_important(rules, guards);
rule_node
}
@ -994,8 +994,7 @@ pub trait MatchMethods : TElement {
}
}
let mut applicable_declarations =
Vec::<ApplicableDeclarationBlock>::with_capacity(16);
let mut applicable_declarations = ApplicableDeclarationList::new();
let stylist = &context.shared.stylist;
let style_attribute = self.style_attribute();
@ -1054,8 +1053,7 @@ pub trait MatchMethods : TElement {
return false;
}
let mut applicable_declarations =
Vec::<ApplicableDeclarationBlock>::with_capacity(16);
let mut applicable_declarations = ApplicableDeclarationList::new();
let map = &mut context.thread_local.selector_flags;
let mut set_selector_flags = |element: &Self, flags: ElementSelectorFlags| {