OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/codegen.h" | 5 #include "src/codegen.h" |
6 #include "src/deoptimizer.h" | 6 #include "src/deoptimizer.h" |
7 #include "src/full-codegen/full-codegen.h" | 7 #include "src/full-codegen/full-codegen.h" |
8 #include "src/register-configuration.h" | 8 #include "src/register-configuration.h" |
9 #include "src/safepoint-table.h" | 9 #include "src/safepoint-table.h" |
10 | 10 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 DCHECK(Register::kNumRegisters == kNumberOfRegisters); | 204 DCHECK(Register::kNumRegisters == kNumberOfRegisters); |
205 for (int i = 0; i < kNumberOfRegisters; i++) { | 205 for (int i = 0; i < kNumberOfRegisters; i++) { |
206 int offset = (i * kPointerSize) + FrameDescription::registers_offset(); | 206 int offset = (i * kPointerSize) + FrameDescription::registers_offset(); |
207 __ ldr(r2, MemOperand(sp, i * kPointerSize)); | 207 __ ldr(r2, MemOperand(sp, i * kPointerSize)); |
208 __ str(r2, MemOperand(r1, offset)); | 208 __ str(r2, MemOperand(r1, offset)); |
209 } | 209 } |
210 | 210 |
211 // Copy VFP registers to | 211 // Copy VFP registers to |
212 // double_registers_[DoubleRegister::kMaxNumAllocatableRegisters] | 212 // double_registers_[DoubleRegister::kMaxNumAllocatableRegisters] |
213 int double_regs_offset = FrameDescription::double_registers_offset(); | 213 int double_regs_offset = FrameDescription::double_registers_offset(); |
214 const RegisterConfiguration* config = RegisterConfiguration::ArchDefault(); | 214 const RegisterConfiguration* config = |
| 215 RegisterConfiguration::ArchDefault(RegisterConfiguration::CRANKSHAFT); |
215 for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { | 216 for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { |
216 int code = config->GetAllocatableDoubleCode(i); | 217 int code = config->GetAllocatableDoubleCode(i); |
217 int dst_offset = code * kDoubleSize + double_regs_offset; | 218 int dst_offset = code * kDoubleSize + double_regs_offset; |
218 int src_offset = code * kDoubleSize + kNumberOfRegisters * kPointerSize; | 219 int src_offset = code * kDoubleSize + kNumberOfRegisters * kPointerSize; |
219 __ vldr(d0, sp, src_offset); | 220 __ vldr(d0, sp, src_offset); |
220 __ vstr(d0, r1, dst_offset); | 221 __ vstr(d0, r1, dst_offset); |
221 } | 222 } |
222 | 223 |
223 // Remove the bailout id and the saved registers from the stack. | 224 // Remove the bailout id and the saved registers from the stack. |
224 __ add(sp, sp, Operand(kSavedRegistersAreaSize + (1 * kPointerSize))); | 225 __ add(sp, sp, Operand(kSavedRegistersAreaSize + (1 * kPointerSize))); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 356 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { |
356 DCHECK(FLAG_enable_embedded_constant_pool); | 357 DCHECK(FLAG_enable_embedded_constant_pool); |
357 SetFrameSlot(offset, value); | 358 SetFrameSlot(offset, value); |
358 } | 359 } |
359 | 360 |
360 | 361 |
361 #undef __ | 362 #undef __ |
362 | 363 |
363 } // namespace internal | 364 } // namespace internal |
364 } // namespace v8 | 365 } // namespace v8 |
OLD | NEW |