servo: Merge #17242 - Reduce the size of ApplicableDeclarationBlock (from bzbarsky:smaller-decl-block); r=bholley

The level is a u8, so on 64-bit it packs nicely after the u32 specificity.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix https://bugzilla.mozilla.org/show_bug.cgi?id=1371297

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: ca8961a93bd5dfb2680ed0cb73a5fcc0ce0f0fdb

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : 50e8378984e0b24cde80ee88d52c0a58ab123cc5
This commit is contained in:
Boris Zbarsky 2017-06-08 14:26:30 -07:00
Родитель cb34410a81
Коммит 5cc3093a75
2 изменённых файлов: 7 добавлений и 4 удалений

Просмотреть файл

@ -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,
}
}
}

Просмотреть файл

@ -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);