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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/arm/macro-assembler-arm.h" | 7 #include "src/arm/macro-assembler-arm.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 return Operand(constant.ToInt32()); | 70 return Operand(constant.ToInt32()); |
71 case Constant::kFloat32: | 71 case Constant::kFloat32: |
72 return Operand( | 72 return Operand( |
73 isolate()->factory()->NewNumber(constant.ToFloat32(), TENURED)); | 73 isolate()->factory()->NewNumber(constant.ToFloat32(), TENURED)); |
74 case Constant::kFloat64: | 74 case Constant::kFloat64: |
75 return Operand( | 75 return Operand( |
76 isolate()->factory()->NewNumber(constant.ToFloat64(), TENURED)); | 76 isolate()->factory()->NewNumber(constant.ToFloat64(), TENURED)); |
77 case Constant::kInt64: | 77 case Constant::kInt64: |
78 case Constant::kExternalReference: | 78 case Constant::kExternalReference: |
79 case Constant::kHeapObject: | 79 case Constant::kHeapObject: |
| 80 case Constant::kRpoNumber: |
80 break; | 81 break; |
81 } | 82 } |
82 UNREACHABLE(); | 83 UNREACHABLE(); |
83 return Operand::Zero(); | 84 return Operand::Zero(); |
84 } | 85 } |
85 | 86 |
86 Operand InputOperand2(int first_index) { | 87 Operand InputOperand2(int first_index) { |
87 const int index = first_index; | 88 const int index = first_index; |
88 switch (AddressingModeField::decode(instr_->opcode())) { | 89 switch (AddressingModeField::decode(instr_->opcode())) { |
89 case kMode_None: | 90 case kMode_None: |
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 case Constant::kFloat64: | 815 case Constant::kFloat64: |
815 __ Move(dst, | 816 __ Move(dst, |
816 isolate()->factory()->NewNumber(src.ToFloat64(), TENURED)); | 817 isolate()->factory()->NewNumber(src.ToFloat64(), TENURED)); |
817 break; | 818 break; |
818 case Constant::kExternalReference: | 819 case Constant::kExternalReference: |
819 __ mov(dst, Operand(src.ToExternalReference())); | 820 __ mov(dst, Operand(src.ToExternalReference())); |
820 break; | 821 break; |
821 case Constant::kHeapObject: | 822 case Constant::kHeapObject: |
822 __ Move(dst, src.ToHeapObject()); | 823 __ Move(dst, src.ToHeapObject()); |
823 break; | 824 break; |
| 825 case Constant::kRpoNumber: |
| 826 UNREACHABLE(); // TODO(dcarney): loading RPO constants on arm. |
| 827 break; |
824 } | 828 } |
825 if (destination->IsStackSlot()) __ str(dst, g.ToMemOperand(destination)); | 829 if (destination->IsStackSlot()) __ str(dst, g.ToMemOperand(destination)); |
826 } else if (src.type() == Constant::kFloat32) { | 830 } else if (src.type() == Constant::kFloat32) { |
827 SwVfpRegister dst = destination->IsDoubleRegister() | 831 SwVfpRegister dst = destination->IsDoubleRegister() |
828 ? g.ToFloat32Register(destination) | 832 ? g.ToFloat32Register(destination) |
829 : kScratchDoubleReg.low(); | 833 : kScratchDoubleReg.low(); |
830 // TODO(turbofan): Can we do better here? | 834 // TODO(turbofan): Can we do better here? |
831 __ mov(ip, Operand(bit_cast<int32_t>(src.ToFloat32()))); | 835 __ mov(ip, Operand(bit_cast<int32_t>(src.ToFloat32()))); |
832 __ vmov(dst, ip); | 836 __ vmov(dst, ip); |
833 if (destination->IsDoubleStackSlot()) { | 837 if (destination->IsDoubleStackSlot()) { |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 } | 962 } |
959 } | 963 } |
960 MarkLazyDeoptSite(); | 964 MarkLazyDeoptSite(); |
961 } | 965 } |
962 | 966 |
963 #undef __ | 967 #undef __ |
964 | 968 |
965 } // namespace compiler | 969 } // namespace compiler |
966 } // namespace internal | 970 } // namespace internal |
967 } // namespace v8 | 971 } // namespace v8 |
OLD | NEW |