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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/base/division-by-constant.h" | 8 #include "src/base/division-by-constant.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 2805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2816 | 2816 |
2817 int offset = ExitFrameConstants::kLastExitFrameField; | 2817 int offset = ExitFrameConstants::kLastExitFrameField; |
2818 while (!saved_fp_regs.IsEmpty()) { | 2818 while (!saved_fp_regs.IsEmpty()) { |
2819 const CPURegister& dst0 = saved_fp_regs.PopHighestIndex(); | 2819 const CPURegister& dst0 = saved_fp_regs.PopHighestIndex(); |
2820 const CPURegister& dst1 = saved_fp_regs.PopHighestIndex(); | 2820 const CPURegister& dst1 = saved_fp_regs.PopHighestIndex(); |
2821 offset -= 2 * kDRegSize; | 2821 offset -= 2 * kDRegSize; |
2822 Ldp(dst1, dst0, MemOperand(fp, offset)); | 2822 Ldp(dst1, dst0, MemOperand(fp, offset)); |
2823 } | 2823 } |
2824 } | 2824 } |
2825 | 2825 |
| 2826 void MacroAssembler::EnterBuiltinFrame(Register context, Register target, |
| 2827 Register argc) { |
| 2828 Push(lr, fp, context, target); |
| 2829 add(fp, jssp, Operand(2 * kPointerSize)); |
| 2830 Push(argc); |
| 2831 } |
| 2832 |
| 2833 void MacroAssembler::LeaveBuiltinFrame(Register context, Register target, |
| 2834 Register argc) { |
| 2835 Pop(argc); |
| 2836 Pop(target, context, fp, lr); |
| 2837 } |
| 2838 |
2826 void MacroAssembler::EnterExitFrame(bool save_doubles, const Register& scratch, | 2839 void MacroAssembler::EnterExitFrame(bool save_doubles, const Register& scratch, |
2827 int extra_space, | 2840 int extra_space, |
2828 StackFrame::Type frame_type) { | 2841 StackFrame::Type frame_type) { |
2829 DCHECK(jssp.Is(StackPointer())); | 2842 DCHECK(jssp.Is(StackPointer())); |
2830 DCHECK(frame_type == StackFrame::EXIT || | 2843 DCHECK(frame_type == StackFrame::EXIT || |
2831 frame_type == StackFrame::BUILTIN_EXIT); | 2844 frame_type == StackFrame::BUILTIN_EXIT); |
2832 | 2845 |
2833 // Set up the new stack frame. | 2846 // Set up the new stack frame. |
2834 Push(lr, fp); | 2847 Push(lr, fp); |
2835 Mov(fp, StackPointer()); | 2848 Mov(fp, StackPointer()); |
(...skipping 2302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5138 } | 5151 } |
5139 | 5152 |
5140 | 5153 |
5141 #undef __ | 5154 #undef __ |
5142 | 5155 |
5143 | 5156 |
5144 } // namespace internal | 5157 } // namespace internal |
5145 } // namespace v8 | 5158 } // namespace v8 |
5146 | 5159 |
5147 #endif // V8_TARGET_ARCH_ARM64 | 5160 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |