OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1754 if (has_int32_value_) { | 1754 if (has_int32_value_) { |
1755 Range* result = new(zone) Range(int32_value_, int32_value_); | 1755 Range* result = new(zone) Range(int32_value_, int32_value_); |
1756 result->set_can_be_minus_zero(false); | 1756 result->set_can_be_minus_zero(false); |
1757 return result; | 1757 return result; |
1758 } | 1758 } |
1759 return HValue::InferRange(zone); | 1759 return HValue::InferRange(zone); |
1760 } | 1760 } |
1761 | 1761 |
1762 | 1762 |
1763 Range* HPhi::InferRange(Zone* zone) { | 1763 Range* HPhi::InferRange(Zone* zone) { |
1764 if (representation().IsInteger32()) { | 1764 Representation r = representation(); |
| 1765 if (r.IsSmiOrInteger32()) { |
1765 if (block()->IsLoopHeader()) { | 1766 if (block()->IsLoopHeader()) { |
1766 Range* range = new(zone) Range(kMinInt, kMaxInt); | 1767 Range* range = r.IsSmi() |
| 1768 ? new(zone) Range(Smi::kMinValue, Smi::kMaxValue) |
| 1769 : new(zone) Range(kMinInt, kMaxInt); |
1767 return range; | 1770 return range; |
1768 } else { | 1771 } else { |
1769 Range* range = OperandAt(0)->range()->Copy(zone); | 1772 Range* range = OperandAt(0)->range()->Copy(zone); |
1770 for (int i = 1; i < OperandCount(); ++i) { | 1773 for (int i = 1; i < OperandCount(); ++i) { |
1771 range->Union(OperandAt(i)->range()); | 1774 range->Union(OperandAt(i)->range()); |
1772 } | 1775 } |
1773 return range; | 1776 return range; |
1774 } | 1777 } |
1775 } else { | 1778 } else { |
1776 return HValue::InferRange(zone); | 1779 return HValue::InferRange(zone); |
(...skipping 2101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3878 case kBackingStore: | 3881 case kBackingStore: |
3879 if (!name_.is_null()) stream->Add(*String::cast(*name_)->ToCString()); | 3882 if (!name_.is_null()) stream->Add(*String::cast(*name_)->ToCString()); |
3880 stream->Add("[backing-store]"); | 3883 stream->Add("[backing-store]"); |
3881 break; | 3884 break; |
3882 } | 3885 } |
3883 | 3886 |
3884 stream->Add("@%d", offset()); | 3887 stream->Add("@%d", offset()); |
3885 } | 3888 } |
3886 | 3889 |
3887 } } // namespace v8::internal | 3890 } } // namespace v8::internal |
OLD | NEW |