Measure PropertyDeclaration better.

This increases the style-sheets counts for gmail by about 30 MiB.
This commit is contained in:
Nicholas Nethercote 2017-09-07 18:02:51 +10:00
parent 54cd23adb8
commit 0ee32cc8c5

View file

@ -38,7 +38,8 @@ use selectors::parser::SelectorParseError;
use shared_lock::StylesheetGuards; use shared_lock::StylesheetGuards;
use style_traits::{PARSING_MODE_DEFAULT, ToCss, ParseError}; use style_traits::{PARSING_MODE_DEFAULT, ToCss, ParseError};
use style_traits::{PropertyDeclarationParseError, StyleParseError, ValueParseError}; use style_traits::{PropertyDeclarationParseError, StyleParseError, ValueParseError};
use stylesheets::{CssRuleType, MallocSizeOf, MallocSizeOfFn, Origin, UrlExtraData}; use stylesheets::{CssRuleType, MallocSizeOf, MallocSizeOfBox, MallocSizeOfFn, MallocSizeOfVec};
use stylesheets::{Origin, UrlExtraData};
#[cfg(feature = "servo")] use values::Either; #[cfg(feature = "servo")] use values::Either;
use values::generics::text::LineHeight; use values::generics::text::LineHeight;
use values::computed; use values::computed;
@ -1328,10 +1329,26 @@ impl ToCss for PropertyDeclaration {
} }
impl MallocSizeOf for PropertyDeclaration { impl MallocSizeOf for PropertyDeclaration {
fn malloc_size_of_children(&self, _malloc_size_of: MallocSizeOfFn) -> usize { fn malloc_size_of_children(&self, malloc_size_of: MallocSizeOfFn) -> usize {
// The variants of PropertyDeclaration mostly (entirely?) contain match *self {
// scalars, so this is reasonable. % for property in data.longhands:
0 % if property.boxed and property.is_vector:
<% raise Exception("this should not happen! not smart to box a vector here") %>
% elif property.boxed:
PropertyDeclaration::${property.camel_case}(ref sv_box) => {
sv_box.malloc_shallow_size_of_box(malloc_size_of)
}
% elif property.is_vector:
PropertyDeclaration::${property.camel_case}(ref sv_vec) => {
sv_vec.0.malloc_shallow_size_of_vec(malloc_size_of)
}
% endif
% endfor
PropertyDeclaration::CSSWideKeyword(..) => 0,
PropertyDeclaration::WithVariables(..) => 0,
PropertyDeclaration::Custom(..) => 0,
_ => 0,
}
} }
} }