OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/base/adapters.h" | 5 #include "src/base/adapters.h" |
6 #include "src/compiler/instruction-selector-impl.h" | 6 #include "src/compiler/instruction-selector-impl.h" |
7 #include "src/compiler/node-matchers.h" | 7 #include "src/compiler/node-matchers.h" |
8 #include "src/compiler/node-properties.h" | 8 #include "src/compiler/node-properties.h" |
9 #include "src/s390/frames-s390.h" | 9 #include "src/s390/frames-s390.h" |
10 | 10 |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
695 } else if (cont->IsTrap()) { | 695 } else if (cont->IsTrap()) { |
696 inputs[input_count++] = g.UseImmediate(cont->trap_id()); | 696 inputs[input_count++] = g.UseImmediate(cont->trap_id()); |
697 selector->Emit(opcode, output_count, outputs, input_count, inputs); | 697 selector->Emit(opcode, output_count, outputs, input_count, inputs); |
698 } else { | 698 } else { |
699 selector->Emit(opcode, output_count, outputs, input_count, inputs); | 699 selector->Emit(opcode, output_count, outputs, input_count, inputs); |
700 } | 700 } |
701 } | 701 } |
702 | 702 |
703 } // namespace | 703 } // namespace |
704 | 704 |
705 void InstructionSelector::VisitStackSlot(Node* node) { | |
706 StackSlotRepresentation rep = StackSlotRepresentationOf(node->op()); | |
707 int slot = frame_->AllocateSpillSlot(rep.size()); | |
708 OperandGenerator g(this); | |
709 | |
710 Emit(kArchStackSlot, g.DefineAsRegister(node), | |
711 sequence()->AddImmediate(Constant(slot)), 0, nullptr); | |
712 } | |
713 | |
714 void InstructionSelector::VisitLoad(Node* node) { | 705 void InstructionSelector::VisitLoad(Node* node) { |
715 S390OperandGenerator g(this); | 706 S390OperandGenerator g(this); |
716 ArchOpcode opcode = SelectLoadOpcode(node); | 707 ArchOpcode opcode = SelectLoadOpcode(node); |
717 InstructionOperand outputs[1]; | 708 InstructionOperand outputs[1]; |
718 outputs[0] = g.DefineAsRegister(node); | 709 outputs[0] = g.DefineAsRegister(node); |
719 InstructionOperand inputs[3]; | 710 InstructionOperand inputs[3]; |
720 size_t input_count = 0; | 711 size_t input_count = 0; |
721 AddressingMode mode = | 712 AddressingMode mode = |
722 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); | 713 g.GetEffectiveAddressMemoryOperand(node, inputs, &input_count); |
723 InstructionCode code = opcode | AddressingModeField::encode(mode); | 714 InstructionCode code = opcode | AddressingModeField::encode(mode); |
(...skipping 1786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2510 // static | 2501 // static |
2511 MachineOperatorBuilder::AlignmentRequirements | 2502 MachineOperatorBuilder::AlignmentRequirements |
2512 InstructionSelector::AlignmentRequirements() { | 2503 InstructionSelector::AlignmentRequirements() { |
2513 return MachineOperatorBuilder::AlignmentRequirements:: | 2504 return MachineOperatorBuilder::AlignmentRequirements:: |
2514 FullUnalignedAccessSupport(); | 2505 FullUnalignedAccessSupport(); |
2515 } | 2506 } |
2516 | 2507 |
2517 } // namespace compiler | 2508 } // namespace compiler |
2518 } // namespace internal | 2509 } // namespace internal |
2519 } // namespace v8 | 2510 } // namespace v8 |
OLD | NEW |