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 |