| 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/instruction-selector.h" | 5 #include "src/compiler/instruction-selector.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/base/adapters.h" | 9 #include "src/base/adapters.h" |
| 10 #include "src/compiler/instruction-selector-impl.h" | 10 #include "src/compiler/instruction-selector-impl.h" |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 case IrOpcode::kEffectPhi: | 549 case IrOpcode::kEffectPhi: |
| 550 case IrOpcode::kMerge: | 550 case IrOpcode::kMerge: |
| 551 case IrOpcode::kTerminate: | 551 case IrOpcode::kTerminate: |
| 552 case IrOpcode::kBeginRegion: | 552 case IrOpcode::kBeginRegion: |
| 553 // No code needed for these graph artifacts. | 553 // No code needed for these graph artifacts. |
| 554 return; | 554 return; |
| 555 case IrOpcode::kIfException: | 555 case IrOpcode::kIfException: |
| 556 return MarkAsReference(node), VisitIfException(node); | 556 return MarkAsReference(node), VisitIfException(node); |
| 557 case IrOpcode::kFinishRegion: | 557 case IrOpcode::kFinishRegion: |
| 558 return MarkAsReference(node), VisitFinishRegion(node); | 558 return MarkAsReference(node), VisitFinishRegion(node); |
| 559 case IrOpcode::kGuard: |
| 560 return MarkAsReference(node), VisitGuard(node); |
| 559 case IrOpcode::kParameter: { | 561 case IrOpcode::kParameter: { |
| 560 MachineType type = | 562 MachineType type = |
| 561 linkage()->GetParameterType(ParameterIndexOf(node->op())); | 563 linkage()->GetParameterType(ParameterIndexOf(node->op())); |
| 562 MarkAsRepresentation(type, node); | 564 MarkAsRepresentation(type, node); |
| 563 return VisitParameter(node); | 565 return VisitParameter(node); |
| 564 } | 566 } |
| 565 case IrOpcode::kOsrValue: | 567 case IrOpcode::kOsrValue: |
| 566 return MarkAsReference(node), VisitOsrValue(node); | 568 return MarkAsReference(node), VisitOsrValue(node); |
| 567 case IrOpcode::kPhi: { | 569 case IrOpcode::kPhi: { |
| 568 MachineType type = OpParameter<MachineType>(node); | 570 MachineType type = OpParameter<MachineType>(node); |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 #endif // V8_TARGET_ARCH_32_BIT | 936 #endif // V8_TARGET_ARCH_32_BIT |
| 935 | 937 |
| 936 | 938 |
| 937 void InstructionSelector::VisitFinishRegion(Node* node) { | 939 void InstructionSelector::VisitFinishRegion(Node* node) { |
| 938 OperandGenerator g(this); | 940 OperandGenerator g(this); |
| 939 Node* value = node->InputAt(0); | 941 Node* value = node->InputAt(0); |
| 940 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); | 942 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); |
| 941 } | 943 } |
| 942 | 944 |
| 943 | 945 |
| 946 void InstructionSelector::VisitGuard(Node* node) { |
| 947 OperandGenerator g(this); |
| 948 Node* value = node->InputAt(0); |
| 949 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); |
| 950 } |
| 951 |
| 952 |
| 944 void InstructionSelector::VisitParameter(Node* node) { | 953 void InstructionSelector::VisitParameter(Node* node) { |
| 945 OperandGenerator g(this); | 954 OperandGenerator g(this); |
| 946 int index = ParameterIndexOf(node->op()); | 955 int index = ParameterIndexOf(node->op()); |
| 947 Emit(kArchNop, | 956 Emit(kArchNop, |
| 948 g.DefineAsLocation(node, linkage()->GetParameterLocation(index), | 957 g.DefineAsLocation(node, linkage()->GetParameterLocation(index), |
| 949 linkage()->GetParameterType(index))); | 958 linkage()->GetParameterType(index))); |
| 950 } | 959 } |
| 951 | 960 |
| 952 | 961 |
| 953 void InstructionSelector::VisitIfException(Node* node) { | 962 void InstructionSelector::VisitIfException(Node* node) { |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1292 for (StateValuesAccess::TypedNode input_node : StateValuesAccess(stack)) { | 1301 for (StateValuesAccess::TypedNode input_node : StateValuesAccess(stack)) { |
| 1293 inputs->push_back(OperandForDeopt(&g, input_node.node, kind)); | 1302 inputs->push_back(OperandForDeopt(&g, input_node.node, kind)); |
| 1294 descriptor->SetType(value_index++, input_node.type); | 1303 descriptor->SetType(value_index++, input_node.type); |
| 1295 } | 1304 } |
| 1296 DCHECK(value_index == descriptor->GetSize()); | 1305 DCHECK(value_index == descriptor->GetSize()); |
| 1297 } | 1306 } |
| 1298 | 1307 |
| 1299 } // namespace compiler | 1308 } // namespace compiler |
| 1300 } // namespace internal | 1309 } // namespace internal |
| 1301 } // namespace v8 | 1310 } // namespace v8 |
| OLD | NEW |