Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index 5bea55a77d844fd57cd2af9e2458eb457f476763..2be2a032574b6bf9af1f8560e19fe95d1694bab7 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -862,10 +862,19 @@ void HInstanceOf::PrintDataTo(StringStream* stream) { |
Range* HValue::InferRange() { |
- // Untagged integer32 cannot be -0, all other representations can. |
- Range* result = new Range(); |
- result->set_can_be_minus_zero(!representation().IsInteger32()); |
- return result; |
+ if (representation().IsTagged()) { |
+ // Tagged values are always in int32 range when converted to integer, |
+ // but they can contain -0. |
+ Range* result = new Range(); |
+ result->set_can_be_minus_zero(true); |
+ return result; |
+ } else if (representation().IsNone()) { |
+ return NULL; |
+ } else { |
+ // Untagged integer32 cannot be -0 and we don't compute ranges for |
+ // untagged doubles. |
+ return new Range(); |
+ } |
} |