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/mips/macro-assembler-mips.h" | 9 #include "src/mips/macro-assembler-mips.h" |
10 #include "src/scopes.h" | 10 #include "src/scopes.h" |
(...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1167 MemOperand dst = g.ToMemOperand(destination); | 1167 MemOperand dst = g.ToMemOperand(destination); |
1168 __ Move(temp, src); | 1168 __ Move(temp, src); |
1169 __ ldc1(src, dst); | 1169 __ ldc1(src, dst); |
1170 __ sdc1(temp, dst); | 1170 __ sdc1(temp, dst); |
1171 } | 1171 } |
1172 } else if (source->IsDoubleStackSlot()) { | 1172 } else if (source->IsDoubleStackSlot()) { |
1173 DCHECK(destination->IsDoubleStackSlot()); | 1173 DCHECK(destination->IsDoubleStackSlot()); |
1174 Register temp_0 = kScratchReg; | 1174 Register temp_0 = kScratchReg; |
1175 FPURegister temp_1 = kScratchDoubleReg; | 1175 FPURegister temp_1 = kScratchDoubleReg; |
1176 MemOperand src0 = g.ToMemOperand(source); | 1176 MemOperand src0 = g.ToMemOperand(source); |
1177 MemOperand src1(src0.rm(), src0.offset() + kPointerSize); | 1177 MemOperand src1(src0.rm(), src0.offset() + kIntSize); |
1178 MemOperand dst0 = g.ToMemOperand(destination); | 1178 MemOperand dst0 = g.ToMemOperand(destination); |
1179 MemOperand dst1(dst0.rm(), dst0.offset() + kPointerSize); | 1179 MemOperand dst1(dst0.rm(), dst0.offset() + kIntSize); |
1180 __ ldc1(temp_1, dst0); // Save destination in temp_1. | 1180 __ ldc1(temp_1, dst0); // Save destination in temp_1. |
1181 __ lw(temp_0, src0); // Then use temp_0 to copy source to destination. | 1181 __ lw(temp_0, src0); // Then use temp_0 to copy source to destination. |
1182 __ sw(temp_0, dst0); | 1182 __ sw(temp_0, dst0); |
1183 __ lw(temp_0, src1); | 1183 __ lw(temp_0, src1); |
1184 __ sw(temp_0, dst1); | 1184 __ sw(temp_0, dst1); |
1185 __ sdc1(temp_1, src0); | 1185 __ sdc1(temp_1, src0); |
1186 } else { | 1186 } else { |
1187 // No other combinations are possible. | 1187 // No other combinations are possible. |
1188 UNREACHABLE(); | 1188 UNREACHABLE(); |
1189 } | 1189 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1222 } | 1222 } |
1223 } | 1223 } |
1224 MarkLazyDeoptSite(); | 1224 MarkLazyDeoptSite(); |
1225 } | 1225 } |
1226 | 1226 |
1227 #undef __ | 1227 #undef __ |
1228 | 1228 |
1229 } // namespace compiler | 1229 } // namespace compiler |
1230 } // namespace internal | 1230 } // namespace internal |
1231 } // namespace v8 | 1231 } // namespace v8 |
OLD | NEW |