Bug 1226627 - Use fmin[f]/fmax[f] when clamping floating point values (perf). r=roc

This commit is contained in:
Mats Palmgren 2015-11-29 17:58:36 +01:00
parent 54af341c78
commit 3eed137d9a

View File

@ -110,6 +110,8 @@ inline nscoord NSToCoordRoundWithClamp(float aValue)
if (aValue <= nscoord_MIN) {
return nscoord_MIN;
}
// NOTE: we can't replace the early returns above with fminf/fmaxf because
// NSToCoordRound(float(nscoord_MAX)) is negative on win32 (bug 1226627).
#endif
return NSToCoordRound(aValue);
}
@ -259,12 +261,8 @@ inline nscoord NSToCoordFloorClamped(float aValue)
{
#ifndef NS_COORD_IS_FLOAT
// Bounds-check before converting out of float, to avoid overflow
if (aValue >= nscoord_MAX) {
return nscoord_MAX;
}
if (aValue <= nscoord_MIN) {
return nscoord_MIN;
}
aValue = fminf(aValue, nscoord_MAX);
aValue = fmaxf(aValue, nscoord_MIN);
#endif
return NSToCoordFloor(aValue);
}
@ -283,12 +281,8 @@ inline nscoord NSToCoordCeilClamped(double aValue)
{
#ifndef NS_COORD_IS_FLOAT
// Bounds-check before converting out of double, to avoid overflow
if (aValue >= nscoord_MAX) {
return nscoord_MAX;
}
if (aValue <= nscoord_MIN) {
return nscoord_MIN;
}
aValue = fmin(aValue, nscoord_MAX);
aValue = fmax(aValue, nscoord_MIN);
#endif
return NSToCoordCeil(aValue);
}
@ -315,12 +309,8 @@ inline nscoord NSToCoordTruncClamped(float aValue)
{
#ifndef NS_COORD_IS_FLOAT
// Bounds-check before converting out of float, to avoid overflow
if (aValue >= nscoord_MAX) {
return nscoord_MAX;
}
if (aValue <= nscoord_MIN) {
return nscoord_MIN;
}
aValue = fminf(aValue, nscoord_MAX);
aValue = fmaxf(aValue, nscoord_MIN);
#endif
return NSToCoordTrunc(aValue);
}
@ -329,12 +319,8 @@ inline nscoord NSToCoordTruncClamped(double aValue)
{
#ifndef NS_COORD_IS_FLOAT
// Bounds-check before converting out of double, to avoid overflow
if (aValue >= nscoord_MAX) {
return nscoord_MAX;
}
if (aValue <= nscoord_MIN) {
return nscoord_MIN;
}
aValue = fmin(aValue, nscoord_MAX);
aValue = fmax(aValue, nscoord_MIN);
#endif
return NSToCoordTrunc(aValue);
}