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