Index: Source/JavaScriptCore/wtf/MathExtras.h |
=================================================================== |
--- Source/JavaScriptCore/wtf/MathExtras.h (revision 88844) |
+++ Source/JavaScriptCore/wtf/MathExtras.h (working copy) |
@@ -220,17 +220,27 @@ |
return static_cast<int>(std::max<double>(std::min(d, maxIntAsDouble), 0)); |
} |
-inline int clampToInteger(float d) |
+inline int clampToInteger(float x) |
{ |
- const float minIntAsFloat = static_cast<float>(std::numeric_limits<int>::min()); |
- const float maxIntAsFloat = static_cast<float>(std::numeric_limits<int>::max()); |
- return static_cast<int>(std::max(std::min(d, maxIntAsFloat), minIntAsFloat)); |
+ static const int s_intMax = std::numeric_limits<int>::max(); |
+ static const int s_intMin = std::numeric_limits<int>::min(); |
+ |
+ if (x >= static_cast<float>(s_intMax)) |
+ return s_intMax; |
+ if (x < static_cast<float>(s_intMin)) |
+ return s_intMin; |
+ return static_cast<int>(x); |
} |
-inline int clampToPositiveInteger(float d) |
+inline int clampToPositiveInteger(float x) |
{ |
- const float maxIntAsFloat = static_cast<float>(std::numeric_limits<int>::max()); |
- return static_cast<int>(std::max<float>(std::min(d, maxIntAsFloat), 0)); |
+ static const int s_intMax = std::numeric_limits<int>::max(); |
+ |
+ if (x >= static_cast<float>(s_intMax)) |
+ return s_intMax; |
+ if (x < 0) |
+ return 0; |
+ return static_cast<int>(x); |
} |
inline int clampToInteger(unsigned value) |