| 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 |