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 #include "src/compiler/code-generator-impl.h" | 6 #include "src/compiler/code-generator-impl.h" |
7 #include "src/compiler/gap-resolver.h" | 7 #include "src/compiler/gap-resolver.h" |
8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
9 #include "src/compiler/node-properties-inl.h" | 9 #include "src/compiler/node-properties-inl.h" |
10 #include "src/mips/macro-assembler-mips.h" | 10 #include "src/mips/macro-assembler-mips.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 isolate()->factory()->NewNumber(constant.ToFloat32(), TENURED)); | 63 isolate()->factory()->NewNumber(constant.ToFloat32(), TENURED)); |
64 case Constant::kFloat64: | 64 case Constant::kFloat64: |
65 return Operand( | 65 return Operand( |
66 isolate()->factory()->NewNumber(constant.ToFloat64(), TENURED)); | 66 isolate()->factory()->NewNumber(constant.ToFloat64(), TENURED)); |
67 case Constant::kInt64: | 67 case Constant::kInt64: |
68 case Constant::kExternalReference: | 68 case Constant::kExternalReference: |
69 case Constant::kHeapObject: | 69 case Constant::kHeapObject: |
70 // TODO(plind): Maybe we should handle ExtRef & HeapObj here? | 70 // TODO(plind): Maybe we should handle ExtRef & HeapObj here? |
71 // maybe not done on arm due to const pool ?? | 71 // maybe not done on arm due to const pool ?? |
72 break; | 72 break; |
| 73 case Constant::kRpoNumber: |
| 74 UNREACHABLE(); // TODO(titzer): RPO immediates on mips? |
| 75 break; |
73 } | 76 } |
74 UNREACHABLE(); | 77 UNREACHABLE(); |
75 return Operand(zero_reg); | 78 return Operand(zero_reg); |
76 } | 79 } |
77 | 80 |
78 Operand InputOperand(int index) { | 81 Operand InputOperand(int index) { |
79 InstructionOperand* op = instr_->InputAt(index); | 82 InstructionOperand* op = instr_->InputAt(index); |
80 if (op->IsRegister()) { | 83 if (op->IsRegister()) { |
81 return Operand(ToRegister(op)); | 84 return Operand(ToRegister(op)); |
82 } | 85 } |
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 break; | 792 break; |
790 case Constant::kFloat64: | 793 case Constant::kFloat64: |
791 __ li(dst, isolate()->factory()->NewNumber(src.ToFloat64(), TENURED)); | 794 __ li(dst, isolate()->factory()->NewNumber(src.ToFloat64(), TENURED)); |
792 break; | 795 break; |
793 case Constant::kExternalReference: | 796 case Constant::kExternalReference: |
794 __ li(dst, Operand(src.ToExternalReference())); | 797 __ li(dst, Operand(src.ToExternalReference())); |
795 break; | 798 break; |
796 case Constant::kHeapObject: | 799 case Constant::kHeapObject: |
797 __ li(dst, src.ToHeapObject()); | 800 __ li(dst, src.ToHeapObject()); |
798 break; | 801 break; |
| 802 case Constant::kRpoNumber: |
| 803 UNREACHABLE(); // TODO(titzer): loading RPO numbers on mips. |
| 804 break; |
799 } | 805 } |
800 if (destination->IsStackSlot()) __ sw(dst, g.ToMemOperand(destination)); | 806 if (destination->IsStackSlot()) __ sw(dst, g.ToMemOperand(destination)); |
801 } else if (src.type() == Constant::kFloat32) { | 807 } else if (src.type() == Constant::kFloat32) { |
802 FPURegister dst = destination->IsDoubleRegister() | 808 FPURegister dst = destination->IsDoubleRegister() |
803 ? g.ToDoubleRegister(destination) | 809 ? g.ToDoubleRegister(destination) |
804 : kScratchDoubleReg.low(); | 810 : kScratchDoubleReg.low(); |
805 // TODO(turbofan): Can we do better here? | 811 // TODO(turbofan): Can we do better here? |
806 __ li(at, Operand(bit_cast<int32_t>(src.ToFloat32()))); | 812 __ li(at, Operand(bit_cast<int32_t>(src.ToFloat32()))); |
807 __ mtc1(at, dst); | 813 __ mtc1(at, dst); |
808 if (destination->IsDoubleStackSlot()) { | 814 if (destination->IsDoubleStackSlot()) { |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
936 } | 942 } |
937 } | 943 } |
938 MarkLazyDeoptSite(); | 944 MarkLazyDeoptSite(); |
939 } | 945 } |
940 | 946 |
941 #undef __ | 947 #undef __ |
942 | 948 |
943 } // namespace compiler | 949 } // namespace compiler |
944 } // namespace internal | 950 } // namespace internal |
945 } // namespace v8 | 951 } // namespace v8 |
OLD | NEW |