style: remove ComputedStyle::do_cascade_property.

It's defined to be the same in both Servo and Gecko, so it's pointless right
now.
This commit is contained in:
Emilio Cobos Álvarez 2017-01-01 18:44:11 +01:00
parent 32eca899e6
commit 577bd15277
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
2 changed files with 50 additions and 64 deletions

View file

@ -50,7 +50,6 @@ use gecko::values::GeckoStyleCoordConvertible;
use gecko::values::round_border_to_device_pixels; use gecko::values::round_border_to_device_pixels;
use gecko::values::StyleCoordHelpers; use gecko::values::StyleCoordHelpers;
use logical_geometry::WritingMode; use logical_geometry::WritingMode;
use properties::CascadePropertyFn;
use properties::longhands; use properties::longhands;
use std::fmt::{self, Debug}; use std::fmt::{self, Debug};
use std::mem::{transmute, zeroed}; use std::mem::{transmute, zeroed};
@ -146,11 +145,6 @@ impl ComputedValues {
set_raw_initial_values(ptr::null_mut()); set_raw_initial_values(ptr::null_mut());
} }
#[inline]
pub fn do_cascade_property<F: FnOnce(&[CascadePropertyFn])>(f: F) {
f(&CASCADE_PROPERTY)
}
% for style_struct in data.style_structs: % for style_struct in data.style_structs:
#[inline] #[inline]
pub fn clone_${style_struct.name_lower}(&self) -> Arc<style_structs::${style_struct.name}> { pub fn clone_${style_struct.name_lower}(&self) -> Arc<style_structs::${style_struct.name}> {
@ -2663,9 +2657,3 @@ unsafe fn raw_initial_values() -> *mut ComputedValues {
unsafe fn set_raw_initial_values(v: *mut ComputedValues) { unsafe fn set_raw_initial_values(v: *mut ComputedValues) {
INITIAL_VALUES_STORAGE.store(v as usize, Ordering::Relaxed); INITIAL_VALUES_STORAGE.store(v as usize, Ordering::Relaxed);
} }
static CASCADE_PROPERTY: [CascadePropertyFn; ${len(data.longhands)}] = [
% for property in data.longhands:
longhands::${property.ident}::cascade_property,
% endfor
];

View file

@ -1691,60 +1691,58 @@ pub fn apply_declarations<'a, F, I>(viewport_size: Size2D<Au>,
// //
// To improve i-cache behavior, we outline the individual functions and use // To improve i-cache behavior, we outline the individual functions and use
// virtual dispatch instead. // virtual dispatch instead.
ComputedValues::do_cascade_property(|cascade_property| { % for category_to_cascade_now in ["early", "other"]:
% for category_to_cascade_now in ["early", "other"]: for declaration in iter_declarations() {
for declaration in iter_declarations() { let longhand_id = match declaration.id() {
let longhand_id = match declaration.id() { PropertyDeclarationId::Longhand(id) => id,
PropertyDeclarationId::Longhand(id) => id, PropertyDeclarationId::Custom(..) => continue,
PropertyDeclarationId::Custom(..) => continue, };
};
// The computed value of some properties depends on the // The computed value of some properties depends on the
// (sometimes computed) value of *other* properties. // (sometimes computed) value of *other* properties.
// //
// So we classify properties into "early" and "other", such that // So we classify properties into "early" and "other", such that
// the only dependencies can be from "other" to "early". // the only dependencies can be from "other" to "early".
// //
// We iterate applicable_declarations twice, first cascading // We iterate applicable_declarations twice, first cascading
// "early" properties then "other". // "early" properties then "other".
// //
// Unfortunately, its not easy to check that this // Unfortunately, its not easy to check that this
// classification is correct. // classification is correct.
let is_early_property = matches!(*declaration, let is_early_property = matches!(*declaration,
PropertyDeclaration::FontSize(_) | PropertyDeclaration::FontSize(_) |
PropertyDeclaration::FontFamily(_) | PropertyDeclaration::FontFamily(_) |
PropertyDeclaration::Color(_) | PropertyDeclaration::Color(_) |
PropertyDeclaration::Position(_) | PropertyDeclaration::Position(_) |
PropertyDeclaration::Float(_) | PropertyDeclaration::Float(_) |
PropertyDeclaration::TextDecoration${'' if product == 'servo' else 'Line'}(_) | PropertyDeclaration::TextDecoration${'' if product == 'servo' else 'Line'}(_) |
PropertyDeclaration::WritingMode(_) | PropertyDeclaration::WritingMode(_) |
PropertyDeclaration::Direction(_) | PropertyDeclaration::Direction(_) |
PropertyDeclaration::TextOrientation(_) PropertyDeclaration::TextOrientation(_)
); );
if if
% if category_to_cascade_now == "early": % if category_to_cascade_now == "early":
! !
% endif % endif
is_early_property is_early_property
{ {
continue continue
}
let discriminant = longhand_id as usize;
(cascade_property[discriminant])(declaration,
inherited_style,
&mut context,
&mut seen,
&mut cacheable,
&mut cascade_info,
&mut error_reporter);
} }
% if category_to_cascade_now == "early":
let mode = get_writing_mode(context.style.get_inheritedbox()); let discriminant = longhand_id as usize;
context.style.set_writing_mode(mode); (CASCADE_PROPERTY[discriminant])(declaration,
% endif inherited_style,
% endfor &mut context,
}); &mut seen,
&mut cacheable,
&mut cascade_info,
&mut error_reporter);
}
% if category_to_cascade_now == "early":
let mode = get_writing_mode(context.style.get_inheritedbox());
context.style.set_writing_mode(mode);
% endif
% endfor
let mut style = context.style; let mut style = context.style;