OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #include "double.h" | 7 #include "double.h" |
8 #include "factory.h" | 8 #include "factory.h" |
9 #include "hydrogen-infer-representation.h" | 9 #include "hydrogen-infer-representation.h" |
10 #include "property-details-inl.h" | 10 #include "property-details-inl.h" |
(...skipping 3233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3244 *block = ConstantIsObject(HConstant::cast(value()), isolate()) | 3244 *block = ConstantIsObject(HConstant::cast(value()), isolate()) |
3245 ? FirstSuccessor() : SecondSuccessor(); | 3245 ? FirstSuccessor() : SecondSuccessor(); |
3246 return true; | 3246 return true; |
3247 } | 3247 } |
3248 *block = NULL; | 3248 *block = NULL; |
3249 return false; | 3249 return false; |
3250 } | 3250 } |
3251 | 3251 |
3252 | 3252 |
3253 bool HIsStringAndBranch::KnownSuccessorBlock(HBasicBlock** block) { | 3253 bool HIsStringAndBranch::KnownSuccessorBlock(HBasicBlock** block) { |
| 3254 if (known_successor_index() != kNoKnownSuccessorIndex) { |
| 3255 *block = SuccessorAt(known_successor_index()); |
| 3256 return true; |
| 3257 } |
3254 if (FLAG_fold_constants && value()->IsConstant()) { | 3258 if (FLAG_fold_constants && value()->IsConstant()) { |
3255 *block = HConstant::cast(value())->HasStringValue() | 3259 *block = HConstant::cast(value())->HasStringValue() |
3256 ? FirstSuccessor() : SecondSuccessor(); | 3260 ? FirstSuccessor() : SecondSuccessor(); |
3257 return true; | 3261 return true; |
3258 } | 3262 } |
| 3263 if (value()->type().IsString()) { |
| 3264 *block = FirstSuccessor(); |
| 3265 return true; |
| 3266 } |
| 3267 if (value()->type().IsSmi() || |
| 3268 value()->type().IsNull() || |
| 3269 value()->type().IsBoolean() || |
| 3270 value()->type().IsUndefined() || |
| 3271 value()->type().IsJSObject()) { |
| 3272 *block = SecondSuccessor(); |
| 3273 return true; |
| 3274 } |
3259 *block = NULL; | 3275 *block = NULL; |
3260 return false; | 3276 return false; |
3261 } | 3277 } |
3262 | 3278 |
3263 | 3279 |
3264 bool HIsUndetectableAndBranch::KnownSuccessorBlock(HBasicBlock** block) { | 3280 bool HIsUndetectableAndBranch::KnownSuccessorBlock(HBasicBlock** block) { |
3265 if (FLAG_fold_constants && value()->IsConstant()) { | 3281 if (FLAG_fold_constants && value()->IsConstant()) { |
3266 *block = HConstant::cast(value())->IsUndetectable() | 3282 *block = HConstant::cast(value())->IsUndetectable() |
3267 ? FirstSuccessor() : SecondSuccessor(); | 3283 ? FirstSuccessor() : SecondSuccessor(); |
3268 return true; | 3284 return true; |
(...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4747 break; | 4763 break; |
4748 case kExternalMemory: | 4764 case kExternalMemory: |
4749 stream->Add("[external-memory]"); | 4765 stream->Add("[external-memory]"); |
4750 break; | 4766 break; |
4751 } | 4767 } |
4752 | 4768 |
4753 stream->Add("@%d", offset()); | 4769 stream->Add("@%d", offset()); |
4754 } | 4770 } |
4755 | 4771 |
4756 } } // namespace v8::internal | 4772 } } // namespace v8::internal |
OLD | NEW |