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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 149 |
150 | 150 |
151 void Range::Union(Range* other) { | 151 void Range::Union(Range* other) { |
152 upper_ = Max(upper_, other->upper_); | 152 upper_ = Max(upper_, other->upper_); |
153 lower_ = Min(lower_, other->lower_); | 153 lower_ = Min(lower_, other->lower_); |
154 bool b = CanBeMinusZero() || other->CanBeMinusZero(); | 154 bool b = CanBeMinusZero() || other->CanBeMinusZero(); |
155 set_can_be_minus_zero(b); | 155 set_can_be_minus_zero(b); |
156 } | 156 } |
157 | 157 |
158 | 158 |
| 159 void Range::CombinedMax(Range* other) { |
| 160 upper_ = Max(upper_, other->upper_); |
| 161 lower_ = Max(lower_, other->lower_); |
| 162 set_can_be_minus_zero(CanBeMinusZero() || other->CanBeMinusZero()); |
| 163 } |
| 164 |
| 165 |
| 166 void Range::CombinedMin(Range* other) { |
| 167 upper_ = Min(upper_, other->upper_); |
| 168 lower_ = Min(lower_, other->lower_); |
| 169 set_can_be_minus_zero(CanBeMinusZero() || other->CanBeMinusZero()); |
| 170 } |
| 171 |
| 172 |
159 void Range::Sar(int32_t value) { | 173 void Range::Sar(int32_t value) { |
160 int32_t bits = value & 0x1F; | 174 int32_t bits = value & 0x1F; |
161 lower_ = lower_ >> bits; | 175 lower_ = lower_ >> bits; |
162 upper_ = upper_ >> bits; | 176 upper_ = upper_ >> bits; |
163 set_can_be_minus_zero(false); | 177 set_can_be_minus_zero(false); |
164 } | 178 } |
165 | 179 |
166 | 180 |
167 void Range::Shl(int32_t value) { | 181 void Range::Shl(int32_t value) { |
168 int32_t bits = value & 0x1F; | 182 int32_t bits = value & 0x1F; |
(...skipping 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 if (!right()->range()->CanBeZero()) { | 1245 if (!right()->range()->CanBeZero()) { |
1232 ClearFlag(HValue::kCanBeDivByZero); | 1246 ClearFlag(HValue::kCanBeDivByZero); |
1233 } | 1247 } |
1234 return result; | 1248 return result; |
1235 } else { | 1249 } else { |
1236 return HValue::InferRange(zone); | 1250 return HValue::InferRange(zone); |
1237 } | 1251 } |
1238 } | 1252 } |
1239 | 1253 |
1240 | 1254 |
| 1255 Range* HMathMinMax::InferRange(Zone* zone) { |
| 1256 if (representation().IsInteger32()) { |
| 1257 Range* a = left()->range(); |
| 1258 Range* b = right()->range(); |
| 1259 Range* res = a->Copy(zone); |
| 1260 if (operation_ == kMathMax) { |
| 1261 res->CombinedMax(b); |
| 1262 } else { |
| 1263 ASSERT(operation_ == kMathMin); |
| 1264 res->CombinedMin(b); |
| 1265 } |
| 1266 return res; |
| 1267 } else { |
| 1268 return HValue::InferRange(zone); |
| 1269 } |
| 1270 } |
| 1271 |
| 1272 |
1241 void HPhi::PrintTo(StringStream* stream) { | 1273 void HPhi::PrintTo(StringStream* stream) { |
1242 stream->Add("["); | 1274 stream->Add("["); |
1243 for (int i = 0; i < OperandCount(); ++i) { | 1275 for (int i = 0; i < OperandCount(); ++i) { |
1244 HValue* value = OperandAt(i); | 1276 HValue* value = OperandAt(i); |
1245 stream->Add(" "); | 1277 stream->Add(" "); |
1246 value->PrintNameTo(stream); | 1278 value->PrintNameTo(stream); |
1247 stream->Add(" "); | 1279 stream->Add(" "); |
1248 } | 1280 } |
1249 stream->Add(" uses%d_%di_%dd_%dt", | 1281 stream->Add(" uses%d_%di_%dd_%dt", |
1250 UseCount(), | 1282 UseCount(), |
(...skipping 1333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2584 | 2616 |
2585 | 2617 |
2586 void HCheckPrototypeMaps::Verify() { | 2618 void HCheckPrototypeMaps::Verify() { |
2587 HInstruction::Verify(); | 2619 HInstruction::Verify(); |
2588 ASSERT(HasNoUses()); | 2620 ASSERT(HasNoUses()); |
2589 } | 2621 } |
2590 | 2622 |
2591 #endif | 2623 #endif |
2592 | 2624 |
2593 } } // namespace v8::internal | 2625 } } // namespace v8::internal |
OLD | NEW |