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 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 case IrOpcode::kEffectPhi: | 851 case IrOpcode::kEffectPhi: |
852 case IrOpcode::kMerge: | 852 case IrOpcode::kMerge: |
853 case IrOpcode::kTerminate: | 853 case IrOpcode::kTerminate: |
854 case IrOpcode::kBeginRegion: | 854 case IrOpcode::kBeginRegion: |
855 // No code needed for these graph artifacts. | 855 // No code needed for these graph artifacts. |
856 return; | 856 return; |
857 case IrOpcode::kIfException: | 857 case IrOpcode::kIfException: |
858 return MarkAsReference(node), VisitIfException(node); | 858 return MarkAsReference(node), VisitIfException(node); |
859 case IrOpcode::kFinishRegion: | 859 case IrOpcode::kFinishRegion: |
860 return MarkAsReference(node), VisitFinishRegion(node); | 860 return MarkAsReference(node), VisitFinishRegion(node); |
861 case IrOpcode::kGuard: | |
862 return MarkAsReference(node), VisitGuard(node); | |
863 case IrOpcode::kParameter: { | 861 case IrOpcode::kParameter: { |
864 MachineType type = | 862 MachineType type = |
865 linkage()->GetParameterType(ParameterIndexOf(node->op())); | 863 linkage()->GetParameterType(ParameterIndexOf(node->op())); |
866 MarkAsRepresentation(type.representation(), node); | 864 MarkAsRepresentation(type.representation(), node); |
867 return VisitParameter(node); | 865 return VisitParameter(node); |
868 } | 866 } |
869 case IrOpcode::kOsrValue: | 867 case IrOpcode::kOsrValue: |
870 return MarkAsReference(node), VisitOsrValue(node); | 868 return MarkAsReference(node), VisitOsrValue(node); |
871 case IrOpcode::kPhi: { | 869 case IrOpcode::kPhi: { |
872 MachineRepresentation rep = PhiRepresentationOf(node->op()); | 870 MachineRepresentation rep = PhiRepresentationOf(node->op()); |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1437 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } | 1435 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } |
1438 #endif // V8_TARGET_ARCH_64_BIT | 1436 #endif // V8_TARGET_ARCH_64_BIT |
1439 | 1437 |
1440 void InstructionSelector::VisitFinishRegion(Node* node) { | 1438 void InstructionSelector::VisitFinishRegion(Node* node) { |
1441 OperandGenerator g(this); | 1439 OperandGenerator g(this); |
1442 Node* value = node->InputAt(0); | 1440 Node* value = node->InputAt(0); |
1443 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); | 1441 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); |
1444 } | 1442 } |
1445 | 1443 |
1446 | 1444 |
1447 void InstructionSelector::VisitGuard(Node* node) { | |
1448 OperandGenerator g(this); | |
1449 Node* value = node->InputAt(0); | |
1450 Emit(kArchNop, g.DefineSameAsFirst(node), g.Use(value)); | |
1451 } | |
1452 | |
1453 | |
1454 void InstructionSelector::VisitParameter(Node* node) { | 1445 void InstructionSelector::VisitParameter(Node* node) { |
1455 OperandGenerator g(this); | 1446 OperandGenerator g(this); |
1456 int index = ParameterIndexOf(node->op()); | 1447 int index = ParameterIndexOf(node->op()); |
1457 InstructionOperand op = | 1448 InstructionOperand op = |
1458 linkage()->ParameterHasSecondaryLocation(index) | 1449 linkage()->ParameterHasSecondaryLocation(index) |
1459 ? g.DefineAsDualLocation( | 1450 ? g.DefineAsDualLocation( |
1460 node, linkage()->GetParameterLocation(index), | 1451 node, linkage()->GetParameterLocation(index), |
1461 linkage()->GetParameterSecondaryLocation(index)) | 1452 linkage()->GetParameterSecondaryLocation(index)) |
1462 : g.DefineAsLocation( | 1453 : g.DefineAsLocation( |
1463 node, linkage()->GetParameterLocation(index), | 1454 node, linkage()->GetParameterLocation(index), |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1820 return new (instruction_zone()) FrameStateDescriptor( | 1811 return new (instruction_zone()) FrameStateDescriptor( |
1821 instruction_zone(), state_info.type(), state_info.bailout_id(), | 1812 instruction_zone(), state_info.type(), state_info.bailout_id(), |
1822 state_info.state_combine(), parameters, locals, stack, | 1813 state_info.state_combine(), parameters, locals, stack, |
1823 state_info.shared_info(), outer_state); | 1814 state_info.shared_info(), outer_state); |
1824 } | 1815 } |
1825 | 1816 |
1826 | 1817 |
1827 } // namespace compiler | 1818 } // namespace compiler |
1828 } // namespace internal | 1819 } // namespace internal |
1829 } // namespace v8 | 1820 } // namespace v8 |
OLD | NEW |