OLD | NEW |
---|---|
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
8 #include "src/deoptimizer.h" | 8 #include "src/deoptimizer.h" |
9 #include "src/full-codegen.h" | 9 #include "src/full-codegen.h" |
10 #include "src/safepoint-table.h" | 10 #include "src/safepoint-table.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
125 // Save all allocatable floating point registers. | 125 // Save all allocatable floating point registers. |
126 CPURegList saved_fp_registers(CPURegister::kFPRegister, kDRegSizeInBits, | 126 CPURegList saved_fp_registers(CPURegister::kFPRegister, kDRegSizeInBits, |
127 FPRegister::kAllocatableFPRegisters); | 127 FPRegister::kAllocatableFPRegisters); |
128 __ PushCPURegList(saved_fp_registers); | 128 __ PushCPURegList(saved_fp_registers); |
129 | 129 |
130 // We save all the registers expcept jssp, sp and lr. | 130 // We save all the registers expcept jssp, sp and lr. |
131 CPURegList saved_registers(CPURegister::kRegister, kXRegSizeInBits, 0, 27); | 131 CPURegList saved_registers(CPURegister::kRegister, kXRegSizeInBits, 0, 27); |
132 saved_registers.Combine(fp); | 132 saved_registers.Combine(fp); |
133 __ PushCPURegList(saved_registers); | 133 __ PushCPURegList(saved_registers); |
134 | 134 |
135 __ Mov(x3, Operand(ExternalReference(Isolate::kCEntryFPAddress, isolate()))); | |
yurys
2015/02/10 08:27:13
May be use UseScratchRegisterScope to allocate scr
loislo
2015/02/10 08:54:33
I don't think it makes sense here because the rest
| |
136 __ Str(fp, MemOperand(x3)); | |
137 | |
135 const int kSavedRegistersAreaSize = | 138 const int kSavedRegistersAreaSize = |
136 (saved_registers.Count() * kXRegSize) + | 139 (saved_registers.Count() * kXRegSize) + |
137 (saved_fp_registers.Count() * kDRegSize); | 140 (saved_fp_registers.Count() * kDRegSize); |
138 | 141 |
139 // Floating point registers are saved on the stack above core registers. | 142 // Floating point registers are saved on the stack above core registers. |
140 const int kFPRegistersOffset = saved_registers.Count() * kXRegSize; | 143 const int kFPRegistersOffset = saved_registers.Count() * kXRegSize; |
141 | 144 |
142 // Get the bailout id from the stack. | 145 // Get the bailout id from the stack. |
143 Register bailout_id = x2; | 146 Register bailout_id = x2; |
144 __ Peek(bailout_id, kSavedRegistersAreaSize); | 147 __ Peek(bailout_id, kSavedRegistersAreaSize); |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
352 | 355 |
353 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 356 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { |
354 // No out-of-line constant pool support. | 357 // No out-of-line constant pool support. |
355 UNREACHABLE(); | 358 UNREACHABLE(); |
356 } | 359 } |
357 | 360 |
358 | 361 |
359 #undef __ | 362 #undef __ |
360 | 363 |
361 } } // namespace v8::internal | 364 } } // namespace v8::internal |
OLD | NEW |