| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 "src/compiler/simplified-lowering.h" | 5 #include "src/compiler/simplified-lowering.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/address-map.h" | 9 #include "src/address-map.h" |
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
| (...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 887 return MachineRepresentation::kFloat64; | 887 return MachineRepresentation::kFloat64; |
| 888 } else if (type->Is(Type::ExternalPointer())) { | 888 } else if (type->Is(Type::ExternalPointer())) { |
| 889 return MachineType::PointerRepresentation(); | 889 return MachineType::PointerRepresentation(); |
| 890 } | 890 } |
| 891 return MachineRepresentation::kTagged; | 891 return MachineRepresentation::kTagged; |
| 892 } | 892 } |
| 893 | 893 |
| 894 // Helper for handling selects. | 894 // Helper for handling selects. |
| 895 void VisitSelect(Node* node, Truncation truncation, | 895 void VisitSelect(Node* node, Truncation truncation, |
| 896 SimplifiedLowering* lowering) { | 896 SimplifiedLowering* lowering) { |
| 897 DCHECK(TypeOf(node->InputAt(0))->Is(Type::Boolean())); |
| 897 ProcessInput(node, 0, UseInfo::Bool()); | 898 ProcessInput(node, 0, UseInfo::Bool()); |
| 898 | 899 |
| 899 MachineRepresentation output = | 900 MachineRepresentation output = |
| 900 GetOutputInfoForPhi(node, TypeOf(node), truncation); | 901 GetOutputInfoForPhi(node, TypeOf(node), truncation); |
| 901 SetOutput(node, output); | 902 SetOutput(node, output); |
| 902 | 903 |
| 903 if (lower()) { | 904 if (lower()) { |
| 904 // Update the select operator. | 905 // Update the select operator. |
| 905 SelectParameters p = SelectParametersOf(node->op()); | 906 SelectParameters p = SelectParametersOf(node->op()); |
| 906 if (output != p.representation()) { | 907 if (output != p.representation()) { |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 return VisitLeaf(node, MachineRepresentation::kTaggedPointer); | 1418 return VisitLeaf(node, MachineRepresentation::kTaggedPointer); |
| 1418 case IrOpcode::kPointerConstant: { | 1419 case IrOpcode::kPointerConstant: { |
| 1419 VisitLeaf(node, MachineType::PointerRepresentation()); | 1420 VisitLeaf(node, MachineType::PointerRepresentation()); |
| 1420 if (lower()) { | 1421 if (lower()) { |
| 1421 intptr_t const value = OpParameter<intptr_t>(node); | 1422 intptr_t const value = OpParameter<intptr_t>(node); |
| 1422 DeferReplacement(node, lowering->jsgraph()->IntPtrConstant(value)); | 1423 DeferReplacement(node, lowering->jsgraph()->IntPtrConstant(value)); |
| 1423 } | 1424 } |
| 1424 return; | 1425 return; |
| 1425 } | 1426 } |
| 1426 | 1427 |
| 1427 case IrOpcode::kBranch: | 1428 case IrOpcode::kBranch: { |
| 1429 DCHECK(TypeOf(node->InputAt(0))->Is(Type::Boolean())); |
| 1428 ProcessInput(node, 0, UseInfo::Bool()); | 1430 ProcessInput(node, 0, UseInfo::Bool()); |
| 1429 EnqueueInput(node, NodeProperties::FirstControlIndex(node)); | 1431 EnqueueInput(node, NodeProperties::FirstControlIndex(node)); |
| 1430 return; | 1432 return; |
| 1433 } |
| 1431 case IrOpcode::kSwitch: | 1434 case IrOpcode::kSwitch: |
| 1432 ProcessInput(node, 0, UseInfo::TruncatingWord32()); | 1435 ProcessInput(node, 0, UseInfo::TruncatingWord32()); |
| 1433 EnqueueInput(node, NodeProperties::FirstControlIndex(node)); | 1436 EnqueueInput(node, NodeProperties::FirstControlIndex(node)); |
| 1434 return; | 1437 return; |
| 1435 case IrOpcode::kSelect: | 1438 case IrOpcode::kSelect: |
| 1436 return VisitSelect(node, truncation, lowering); | 1439 return VisitSelect(node, truncation, lowering); |
| 1437 case IrOpcode::kPhi: | 1440 case IrOpcode::kPhi: |
| 1438 return VisitPhi(node, truncation, lowering); | 1441 return VisitPhi(node, truncation, lowering); |
| 1439 case IrOpcode::kCall: | 1442 case IrOpcode::kCall: |
| 1440 return VisitCall(node, lowering); | 1443 return VisitCall(node, lowering); |
| (...skipping 2066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3507 isolate(), graph()->zone(), callable.descriptor(), 0, flags, | 3510 isolate(), graph()->zone(), callable.descriptor(), 0, flags, |
| 3508 Operator::kNoProperties); | 3511 Operator::kNoProperties); |
| 3509 to_number_operator_.set(common()->Call(desc)); | 3512 to_number_operator_.set(common()->Call(desc)); |
| 3510 } | 3513 } |
| 3511 return to_number_operator_.get(); | 3514 return to_number_operator_.get(); |
| 3512 } | 3515 } |
| 3513 | 3516 |
| 3514 } // namespace compiler | 3517 } // namespace compiler |
| 3515 } // namespace internal | 3518 } // namespace internal |
| 3516 } // namespace v8 | 3519 } // namespace v8 |
| OLD | NEW |