Roll back -ffast-math
Summary: @public `-ffast-math` does not have measurable performance benefits. By using `NaN` for *undefined* values again, we can squeeze `YGFloatOptional` into 32 bits. This will also enable us to store `YGValue` (or a variant of it) in 32 bits. Reviewed By: astreet Differential Revision: D13403925 fbshipit-source-id: b13d026bf556f24ab4699e65fb450af13a70961b
This commit is contained in:
committed by
Facebook Github Bot
parent
8ab01fde6e
commit
9ddda3c630
14
yoga/Utils.h
14
yoga/Utils.h
@@ -57,22 +57,12 @@ bool YGValueEqual(const YGValue a, const YGValue b);
|
||||
// difference between two floats is less than 0.0001f or both are undefined.
|
||||
bool YGFloatsEqual(const float a, const float b);
|
||||
|
||||
// We need custom max function, since we want that, if one argument is
|
||||
// YGUndefined then the max funtion should return the other argument as the max
|
||||
// value. We wouldn't have needed a custom max function if YGUndefined was NAN
|
||||
// as fmax has the same behaviour, but with NAN we cannot use `-ffast-math`
|
||||
// compiler flag.
|
||||
float YGFloatMax(const float a, const float b);
|
||||
|
||||
YGFloatOptional YGFloatOptionalMax(
|
||||
const YGFloatOptional& op1,
|
||||
const YGFloatOptional& op2);
|
||||
|
||||
// We need custom min function, since we want that, if one argument is
|
||||
// YGUndefined then the min funtion should return the other argument as the min
|
||||
// value. We wouldn't have needed a custom min function if YGUndefined was NAN
|
||||
// as fmin has the same behaviour, but with NAN we cannot use `-ffast-math`
|
||||
// compiler flag.
|
||||
float YGFloatMin(const float a, const float b);
|
||||
|
||||
// This custom float comparision function compares the array of float with
|
||||
@@ -106,7 +96,9 @@ inline bool YGFlexDirectionIsRow(const YGFlexDirection flexDirection) {
|
||||
flexDirection == YGFlexDirectionRowReverse;
|
||||
}
|
||||
|
||||
inline YGFloatOptional YGResolveValue(const YGValue value, const float ownerSize) {
|
||||
inline YGFloatOptional YGResolveValue(
|
||||
const YGValue value,
|
||||
const float ownerSize) {
|
||||
switch (value.unit) {
|
||||
case YGUnitUndefined:
|
||||
case YGUnitAuto:
|
||||
|
Reference in New Issue
Block a user