Index: src/hydrogen-instructions.cc |
=================================================================== |
--- src/hydrogen-instructions.cc (revision 8750) |
+++ src/hydrogen-instructions.cc (working copy) |
@@ -481,7 +481,6 @@ |
void HValue::AddNewRange(Range* r) { |
if (!HasRange()) ComputeInitialRange(); |
- if (!HasRange()) range_ = new Range(); |
ASSERT(HasRange()); |
r->StackUpon(range_); |
range_ = r; |
@@ -862,27 +861,22 @@ |
Range* HValue::InferRange() { |
- if (representation().IsTagged()) { |
- // Tagged values are always in int32 range when converted to integer, |
- // but they can contain -0. |
+ if (representation().IsInteger32 ()) { |
+ // Untagged integer32 cannot be -0. |
+ return new Range (); |
+ } else { |
+ // Tagged values, untagged doubles, and values with unknown representation |
+ // 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(); |
} |
} |
Range* HConstant::InferRange() { |
if (has_int32_value_) { |
- Range* result = new Range(int32_value_, int32_value_); |
- result->set_can_be_minus_zero(false); |
- return result; |
+ return new Range(int32_value_, int32_value_); |
} |
return HValue::InferRange(); |
} |
@@ -891,8 +885,7 @@ |
Range* HPhi::InferRange() { |
if (representation().IsInteger32()) { |
if (block()->IsLoopHeader()) { |
- Range* range = new Range(kMinInt, kMaxInt); |
- return range; |
+ return new Range(); |
} else { |
Range* range = OperandAt(0)->range()->Copy(); |
for (int i = 1; i < OperandCount(); ++i) { |