Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index 02b6be4d3b7a4622a423d2232b9620796177afa7..b9af11ccc1b416409a6e13910bcc37fd0e9eac8c 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -2610,13 +2610,7 @@ bool Value::IsInt32() const { |
i::Handle<i::Object> obj = Utils::OpenHandle(this); |
if (obj->IsSmi()) return true; |
if (obj->IsNumber()) { |
- double value = obj->Number(); |
- static const i::DoubleRepresentation minus_zero(-0.0); |
- i::DoubleRepresentation rep(value); |
- if (rep.bits == minus_zero.bits) { |
- return false; |
- } |
- return i::FastI2D(i::FastD2I(value)) == value; |
+ return i::IsInt32Double(obj->Number()); |
} |
return false; |
} |
@@ -2627,12 +2621,10 @@ bool Value::IsUint32() const { |
if (obj->IsSmi()) return i::Smi::cast(*obj)->value() >= 0; |
if (obj->IsNumber()) { |
double value = obj->Number(); |
- static const i::DoubleRepresentation minus_zero(-0.0); |
- i::DoubleRepresentation rep(value); |
- if (rep.bits == minus_zero.bits) { |
- return false; |
- } |
- return i::FastUI2D(i::FastD2UI(value)) == value; |
+ return !i::IsMinusZero(value) && |
+ value >= 0 && |
+ value <= i::kMaxUInt32 && |
+ value == i::FastUI2D(i::FastD2UI(value)); |
} |
return false; |
} |