Index: src/number-info.h |
=================================================================== |
--- src/number-info.h (revision 4257) |
+++ src/number-info.h (working copy) |
@@ -115,8 +115,12 @@ |
// Integer32 is an integer that can be represented as either a signed |
// 32-bit integer or as an unsigned 32-bit integer. It has to be |
- // in the range [-2^31, 2^32 - 1]. |
+ // in the range [-2^31, 2^32 - 1]. We also have to check for negative 0 |
+ // as it is not an Integer32. |
static inline bool IsInt32Double(double value) { |
+ const DoubleRepresentation minus_zero(-0.0); |
+ DoubleRepresentation rep(value); |
+ if (rep.bits == minus_zero.bits) return false; |
if (value >= kMinInt && value <= kMaxUInt32) { |
if (value <= kMaxInt && value == static_cast<int32_t>(value)) { |
return true; |