Simplifications and cleanup of range analysis code.
authorfschneider@chromium.org <fschneider@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 28 Jul 2011 09:19:57 +0000 (09:19 +0000)
committerfschneider@chromium.org <fschneider@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 28 Jul 2011 09:19:57 +0000 (09:19 +0000)
Landing two patches contributed by Andy Wingo:

http://codereview.chromium.org/7514040/ and

http://codereview.chromium.org/7516001/
Review URL: http://codereview.chromium.org/7520022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/hydrogen-instructions.cc

index 2be2a032574b6bf9af1f8560e19fe95d1694bab7..15bd071b762526821761b77ab46e29b91fb010f3 100644 (file)
@@ -481,7 +481,6 @@ void HValue::RegisterUse(int index, HValue* new_value) {
 
 void HValue::AddNewRange(Range* r) {
   if (!HasRange()) ComputeInitialRange();
-  if (!HasRange()) range_ = new Range();
   ASSERT(HasRange());
   r->StackUpon(range_);
   range_ = r;
@@ -862,27 +861,22 @@ void HInstanceOf::PrintDataTo(StringStream* stream) {
 
 
 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* HConstant::InferRange() {
 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) {