| 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/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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 // If d16-d31 are not pushed, decrease the stack pointer instead. | 158 // If d16-d31 are not pushed, decrease the stack pointer instead. |
| 159 __ vstm(db_w, sp, d16, d31, ne); | 159 __ vstm(db_w, sp, d16, d31, ne); |
| 160 __ sub(sp, sp, Operand(16 * kDoubleSize), LeaveCC, eq); | 160 __ sub(sp, sp, Operand(16 * kDoubleSize), LeaveCC, eq); |
| 161 __ vstm(db_w, sp, d0, d13); | 161 __ vstm(db_w, sp, d0, d13); |
| 162 | 162 |
| 163 // Push all 16 registers (needed to populate FrameDescription::registers_). | 163 // Push all 16 registers (needed to populate FrameDescription::registers_). |
| 164 // TODO(1588) Note that using pc with stm is deprecated, so we should perhaps | 164 // TODO(1588) Note that using pc with stm is deprecated, so we should perhaps |
| 165 // handle this a bit differently. | 165 // handle this a bit differently. |
| 166 __ stm(db_w, sp, restored_regs | sp.bit() | lr.bit() | pc.bit()); | 166 __ stm(db_w, sp, restored_regs | sp.bit() | lr.bit() | pc.bit()); |
| 167 | 167 |
| 168 __ mov(ip, Operand(ExternalReference(Isolate::kCEntryFPAddress, isolate()))); |
| 169 __ str(fp, MemOperand(ip)); |
| 170 |
| 168 const int kSavedRegistersAreaSize = | 171 const int kSavedRegistersAreaSize = |
| 169 (kNumberOfRegisters * kPointerSize) + kDoubleRegsSize; | 172 (kNumberOfRegisters * kPointerSize) + kDoubleRegsSize; |
| 170 | 173 |
| 171 // Get the bailout id from the stack. | 174 // Get the bailout id from the stack. |
| 172 __ ldr(r2, MemOperand(sp, kSavedRegistersAreaSize)); | 175 __ ldr(r2, MemOperand(sp, kSavedRegistersAreaSize)); |
| 173 | 176 |
| 174 // Get the address of the location in the code object (r3) (return | 177 // Get the address of the location in the code object (r3) (return |
| 175 // address for lazy deoptimization) and compute the fp-to-sp delta in | 178 // address for lazy deoptimization) and compute the fp-to-sp delta in |
| 176 // register r4. | 179 // register r4. |
| 177 __ mov(r3, lr); | 180 __ mov(r3, lr); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 | 354 |
| 352 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { | 355 void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { |
| 353 DCHECK(FLAG_enable_ool_constant_pool); | 356 DCHECK(FLAG_enable_ool_constant_pool); |
| 354 SetFrameSlot(offset, value); | 357 SetFrameSlot(offset, value); |
| 355 } | 358 } |
| 356 | 359 |
| 357 | 360 |
| 358 #undef __ | 361 #undef __ |
| 359 | 362 |
| 360 } } // namespace v8::internal | 363 } } // namespace v8::internal |
| OLD | NEW |