| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/address-map.h" | 7 #include "src/address-map.h" |
| 8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
| 9 #include "src/compiler/linkage.h" | 9 #include "src/compiler/linkage.h" |
| 10 #include "src/compiler/pipeline.h" | 10 #include "src/compiler/pipeline.h" |
| (...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 translation->StoreInt32StackSlot(LocationOperand::cast(op)->index()); | 709 translation->StoreInt32StackSlot(LocationOperand::cast(op)->index()); |
| 710 } else if (type == MachineType::Uint8() || type == MachineType::Uint16() || | 710 } else if (type == MachineType::Uint8() || type == MachineType::Uint16() || |
| 711 type == MachineType::Uint32()) { | 711 type == MachineType::Uint32()) { |
| 712 translation->StoreUint32StackSlot(LocationOperand::cast(op)->index()); | 712 translation->StoreUint32StackSlot(LocationOperand::cast(op)->index()); |
| 713 } else if (type.representation() == MachineRepresentation::kTagged) { | 713 } else if (type.representation() == MachineRepresentation::kTagged) { |
| 714 translation->StoreStackSlot(LocationOperand::cast(op)->index()); | 714 translation->StoreStackSlot(LocationOperand::cast(op)->index()); |
| 715 } else { | 715 } else { |
| 716 CHECK(false); | 716 CHECK(false); |
| 717 } | 717 } |
| 718 } else if (op->IsFPStackSlot()) { | 718 } else if (op->IsFPStackSlot()) { |
| 719 DCHECK(IsFloatingPoint(type.representation())); | 719 if (type.representation() == MachineRepresentation::kFloat64) { |
| 720 translation->StoreDoubleStackSlot(LocationOperand::cast(op)->index()); | 720 translation->StoreDoubleStackSlot(LocationOperand::cast(op)->index()); |
| 721 } else { |
| 722 DCHECK_EQ(MachineRepresentation::kFloat32, type.representation()); |
| 723 translation->StoreFloatStackSlot(LocationOperand::cast(op)->index()); |
| 724 } |
| 721 } else if (op->IsRegister()) { | 725 } else if (op->IsRegister()) { |
| 722 InstructionOperandConverter converter(this, instr); | 726 InstructionOperandConverter converter(this, instr); |
| 723 if (type.representation() == MachineRepresentation::kBit) { | 727 if (type.representation() == MachineRepresentation::kBit) { |
| 724 translation->StoreBoolRegister(converter.ToRegister(op)); | 728 translation->StoreBoolRegister(converter.ToRegister(op)); |
| 725 } else if (type == MachineType::Int8() || type == MachineType::Int16() || | 729 } else if (type == MachineType::Int8() || type == MachineType::Int16() || |
| 726 type == MachineType::Int32()) { | 730 type == MachineType::Int32()) { |
| 727 translation->StoreInt32Register(converter.ToRegister(op)); | 731 translation->StoreInt32Register(converter.ToRegister(op)); |
| 728 } else if (type == MachineType::Uint8() || type == MachineType::Uint16() || | 732 } else if (type == MachineType::Uint8() || type == MachineType::Uint16() || |
| 729 type == MachineType::Uint32()) { | 733 type == MachineType::Uint32()) { |
| 730 translation->StoreUint32Register(converter.ToRegister(op)); | 734 translation->StoreUint32Register(converter.ToRegister(op)); |
| 731 } else if (type.representation() == MachineRepresentation::kTagged) { | 735 } else if (type.representation() == MachineRepresentation::kTagged) { |
| 732 translation->StoreRegister(converter.ToRegister(op)); | 736 translation->StoreRegister(converter.ToRegister(op)); |
| 733 } else { | 737 } else { |
| 734 CHECK(false); | 738 CHECK(false); |
| 735 } | 739 } |
| 736 } else if (op->IsFPRegister()) { | 740 } else if (op->IsFPRegister()) { |
| 737 DCHECK(IsFloatingPoint(type.representation())); | |
| 738 InstructionOperandConverter converter(this, instr); | 741 InstructionOperandConverter converter(this, instr); |
| 739 translation->StoreDoubleRegister(converter.ToDoubleRegister(op)); | 742 if (type.representation() == MachineRepresentation::kFloat64) { |
| 743 translation->StoreDoubleRegister(converter.ToDoubleRegister(op)); |
| 744 } else { |
| 745 DCHECK_EQ(MachineRepresentation::kFloat32, type.representation()); |
| 746 translation->StoreFloatRegister(converter.ToFloatRegister(op)); |
| 747 } |
| 740 } else if (op->IsImmediate()) { | 748 } else if (op->IsImmediate()) { |
| 741 InstructionOperandConverter converter(this, instr); | 749 InstructionOperandConverter converter(this, instr); |
| 742 Constant constant = converter.ToConstant(op); | 750 Constant constant = converter.ToConstant(op); |
| 743 Handle<Object> constant_object; | 751 Handle<Object> constant_object; |
| 744 switch (constant.type()) { | 752 switch (constant.type()) { |
| 745 case Constant::kInt32: | 753 case Constant::kInt32: |
| 746 DCHECK(type == MachineType::Int32() || type == MachineType::Uint32() || | 754 DCHECK(type == MachineType::Int32() || type == MachineType::Uint32() || |
| 747 type.representation() == MachineRepresentation::kBit); | 755 type.representation() == MachineRepresentation::kBit); |
| 748 constant_object = | 756 constant_object = |
| 749 isolate()->factory()->NewNumberFromInt(constant.ToInt32()); | 757 isolate()->factory()->NewNumberFromInt(constant.ToInt32()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 : frame_(gen->frame()), masm_(gen->masm()), next_(gen->ools_) { | 815 : frame_(gen->frame()), masm_(gen->masm()), next_(gen->ools_) { |
| 808 gen->ools_ = this; | 816 gen->ools_ = this; |
| 809 } | 817 } |
| 810 | 818 |
| 811 | 819 |
| 812 OutOfLineCode::~OutOfLineCode() {} | 820 OutOfLineCode::~OutOfLineCode() {} |
| 813 | 821 |
| 814 } // namespace compiler | 822 } // namespace compiler |
| 815 } // namespace internal | 823 } // namespace internal |
| 816 } // namespace v8 | 824 } // namespace v8 |
| OLD | NEW |