Auto merge of #15065 - Manishearth:box-calclop, r=heycam

Use Box<CalcLengthOrPercentage> in specified values to avoid bloating inline sizes

For #15061

CalcLOP is a large struct, and gets used quite often. While #15063 reduces its size a bit,
it will still be much larger than any of the other variants in the `specified::Length*` types,
so it will still bloat sizes, especially for specified values that contain many lengths.

This change boxes it in the length types, so that it just takes one word.

r? @heycam

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15065)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-01-17 11:49:52 -08:00 committed by GitHub
commit f010fb58fd
20 changed files with 280 additions and 249 deletions

View file

@ -194,13 +194,13 @@ impl ToComputedValue for specified::LengthOrPercentage {
fn to_computed_value(&self, context: &Context) -> LengthOrPercentage {
match *self {
specified::LengthOrPercentage::Length(value) => {
specified::LengthOrPercentage::Length(ref value) => {
LengthOrPercentage::Length(value.to_computed_value(context))
}
specified::LengthOrPercentage::Percentage(value) => {
LengthOrPercentage::Percentage(value.0)
}
specified::LengthOrPercentage::Calc(calc) => {
specified::LengthOrPercentage::Calc(ref calc) => {
LengthOrPercentage::Calc(calc.to_computed_value(context))
}
}
@ -216,9 +216,9 @@ impl ToComputedValue for specified::LengthOrPercentage {
LengthOrPercentage::Percentage(value) => {
specified::LengthOrPercentage::Percentage(specified::Percentage(value))
}
LengthOrPercentage::Calc(calc) => {
LengthOrPercentage::Calc(ref calc) => {
specified::LengthOrPercentage::Calc(
ToComputedValue::from_computed_value(&calc)
Box::new(ToComputedValue::from_computed_value(calc))
)
}
}
@ -277,7 +277,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrAuto {
#[inline]
fn to_computed_value(&self, context: &Context) -> LengthOrPercentageOrAuto {
match *self {
specified::LengthOrPercentageOrAuto::Length(value) => {
specified::LengthOrPercentageOrAuto::Length(ref value) => {
LengthOrPercentageOrAuto::Length(value.to_computed_value(context))
}
specified::LengthOrPercentageOrAuto::Percentage(value) => {
@ -286,7 +286,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrAuto {
specified::LengthOrPercentageOrAuto::Auto => {
LengthOrPercentageOrAuto::Auto
}
specified::LengthOrPercentageOrAuto::Calc(calc) => {
specified::LengthOrPercentageOrAuto::Calc(ref calc) => {
LengthOrPercentageOrAuto::Calc(calc.to_computed_value(context))
}
}
@ -306,7 +306,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrAuto {
}
LengthOrPercentageOrAuto::Calc(calc) => {
specified::LengthOrPercentageOrAuto::Calc(
ToComputedValue::from_computed_value(&calc)
Box::new(ToComputedValue::from_computed_value(&calc))
)
}
}
@ -354,13 +354,13 @@ impl ToComputedValue for specified::LengthOrPercentageOrAutoOrContent {
#[inline]
fn to_computed_value(&self, context: &Context) -> LengthOrPercentageOrAutoOrContent {
match *self {
specified::LengthOrPercentageOrAutoOrContent::Length(value) => {
specified::LengthOrPercentageOrAutoOrContent::Length(ref value) => {
LengthOrPercentageOrAutoOrContent::Length(value.to_computed_value(context))
},
specified::LengthOrPercentageOrAutoOrContent::Percentage(value) => {
LengthOrPercentageOrAutoOrContent::Percentage(value.0)
},
specified::LengthOrPercentageOrAutoOrContent::Calc(calc) => {
specified::LengthOrPercentageOrAutoOrContent::Calc(ref calc) => {
LengthOrPercentageOrAutoOrContent::Calc(calc.to_computed_value(context))
},
specified::LengthOrPercentageOrAutoOrContent::Auto => {
@ -392,7 +392,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrAutoOrContent {
}
LengthOrPercentageOrAutoOrContent::Calc(calc) => {
specified::LengthOrPercentageOrAutoOrContent::Calc(
ToComputedValue::from_computed_value(&calc)
Box::new(ToComputedValue::from_computed_value(&calc))
)
}
}
@ -439,13 +439,13 @@ impl ToComputedValue for specified::LengthOrPercentageOrNone {
#[inline]
fn to_computed_value(&self, context: &Context) -> LengthOrPercentageOrNone {
match *self {
specified::LengthOrPercentageOrNone::Length(value) => {
specified::LengthOrPercentageOrNone::Length(ref value) => {
LengthOrPercentageOrNone::Length(value.to_computed_value(context))
}
specified::LengthOrPercentageOrNone::Percentage(value) => {
LengthOrPercentageOrNone::Percentage(value.0)
}
specified::LengthOrPercentageOrNone::Calc(calc) => {
specified::LengthOrPercentageOrNone::Calc(ref calc) => {
LengthOrPercentageOrNone::Calc(calc.to_computed_value(context))
}
specified::LengthOrPercentageOrNone::None => {
@ -468,7 +468,7 @@ impl ToComputedValue for specified::LengthOrPercentageOrNone {
}
LengthOrPercentageOrNone::Calc(calc) => {
specified::LengthOrPercentageOrNone::Calc(
ToComputedValue::from_computed_value(&calc)
Box::new(ToComputedValue::from_computed_value(&calc))
)
}
}