From 811ea395bc71b7b667f293c75b83db92b3e28a78 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 27 Apr 2015 20:25:19 +0200 Subject: [PATCH] Avoid creating a vector in can_share_style_with. --- components/layout/css/matching.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/components/layout/css/matching.rs b/components/layout/css/matching.rs index 503897a5964..b84b04e167c 100644 --- a/components/layout/css/matching.rs +++ b/components/layout/css/matching.rs @@ -20,6 +20,7 @@ use selectors::bloom::BloomFilter; use selectors::matching::{CommonStyleAffectingAttributeMode, CommonStyleAffectingAttributes}; use selectors::matching::{common_style_affecting_attributes, rare_style_affecting_attributes}; use selectors::parser::PseudoElement; +use selectors::smallvec::VecLike; use std::borrow::ToOwned; use std::hash::{Hash, Hasher}; use std::mem; @@ -289,9 +290,29 @@ impl StyleSharingCandidate { return false } - let mut matching_rules = vec![]; + struct RulesSink { + empty: bool, + } + impl VecLike for RulesSink { + #[inline] + fn vec_len(&self) -> usize { + unreachable!() + } + + #[inline] + fn vec_push(&mut self, _value: T) { + self.empty = false; + } + + #[inline] + fn vec_slice_mut<'a>(&'a mut self, _start: usize, _end: usize) + -> &'a mut [T] { + unreachable!() + } + } + let mut matching_rules = RulesSink { empty: true }; element.synthesize_presentational_hints_for_legacy_attributes(&mut matching_rules); - if !matching_rules.is_empty() { + if !matching_rules.empty { return false; }