Reduce the size of ApplicableDeclarationBlock.

The level is a u8, so on 64-bit it packs nicely after the u32 specificity.
This commit is contained in:
Boris Zbarsky 2017-06-08 14:44:55 -04:00
parent 3616b8f0c3
commit 6601ae2810
2 changed files with 7 additions and 4 deletions

View file

@ -1524,9 +1524,9 @@ impl Rule {
-> ApplicableDeclarationBlock {
ApplicableDeclarationBlock {
source: StyleSource::Style(self.style_rule.clone()),
level: level,
source_order: self.source_order,
specificity: self.specificity(),
level: level,
}
}
@ -1557,12 +1557,12 @@ pub struct ApplicableDeclarationBlock {
/// The style source, either a style rule, or a property declaration block.
#[cfg_attr(feature = "servo", ignore_heap_size_of = "Arc")]
pub source: StyleSource,
/// The cascade level this applicable declaration block is in.
pub level: CascadeLevel,
/// The source order of this block.
pub source_order: usize,
/// The specificity of the selector this block is represented by.
pub specificity: u32,
/// The cascade level this applicable declaration block is in.
pub level: CascadeLevel,
}
impl ApplicableDeclarationBlock {
@ -1574,9 +1574,9 @@ impl ApplicableDeclarationBlock {
-> Self {
ApplicableDeclarationBlock {
source: StyleSource::Declarations(declarations),
level: level,
source_order: 0,
specificity: 0,
level: level,
}
}
}

View file

@ -10,6 +10,7 @@ use style::data::{ComputedStyle, ElementData, ElementStyles};
use style::gecko::selector_parser as real;
use style::properties::ComputedValues;
use style::rule_tree::StrongRuleNode;
use style::stylist::ApplicableDeclarationBlock;
#[test]
fn size_of_selectors_dummy_types() {
@ -36,6 +37,8 @@ size_of_test!(test_size_of_element_data, ElementData, 56);
size_of_test!(test_size_of_property_declaration, style::properties::PropertyDeclaration, 32);
size_of_test!(test_size_of_application_declaration_block, ApplicableDeclarationBlock, 32);
// This is huge, but we allocate it on the stack and then never move it,
// we only pass `&mut SourcePropertyDeclaration` references around.
size_of_test!(test_size_of_parsed_declaration, style::properties::SourcePropertyDeclaration, 704);