OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
7 | 7 |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/heap.h" | 9 #include "vm/heap.h" |
10 #include "vm/memory_region.h" | 10 #include "vm/memory_region.h" |
(...skipping 2789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2800 | 2800 |
2801 void Assembler::EnterDartFrameWithInfo(intptr_t frame_size, | 2801 void Assembler::EnterDartFrameWithInfo(intptr_t frame_size, |
2802 Register new_pp, Register new_pc) { | 2802 Register new_pp, Register new_pc) { |
2803 if (new_pc == kNoRegister) { | 2803 if (new_pc == kNoRegister) { |
2804 EnterDartFrame(0); | 2804 EnterDartFrame(0); |
2805 } else { | 2805 } else { |
2806 EnterFrame(0); | 2806 EnterFrame(0); |
2807 pushq(new_pc); | 2807 pushq(new_pc); |
2808 pushq(PP); | 2808 pushq(PP); |
2809 movq(PP, new_pp); | 2809 movq(PP, new_pp); |
2810 } | 2810 if (frame_size != 0) { |
2811 if (frame_size != 0) { | 2811 subq(RSP, Immediate(frame_size)); |
2812 subq(RSP, Immediate(frame_size)); | 2812 } |
2813 } | 2813 } |
2814 } | 2814 } |
2815 | 2815 |
2816 | 2816 |
2817 // On entry to a function compiled for OSR, the caller's frame pointer, the | 2817 // On entry to a function compiled for OSR, the caller's frame pointer, the |
2818 // stack locals, and any copied parameters are already in place. The frame | 2818 // stack locals, and any copied parameters are already in place. The frame |
2819 // pointer is already set up. The PC marker is not correct for the | 2819 // pointer is already set up. The PC marker is not correct for the |
2820 // optimized function and there may be extra space for spill slots to | 2820 // optimized function and there may be extra space for spill slots to |
2821 // allocate. | 2821 // allocate. |
2822 void Assembler::EnterOsrFrame(intptr_t extra_size, | 2822 void Assembler::EnterOsrFrame(intptr_t extra_size, |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3085 | 3085 |
3086 | 3086 |
3087 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 3087 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
3088 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); | 3088 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); |
3089 return xmm_reg_names[reg]; | 3089 return xmm_reg_names[reg]; |
3090 } | 3090 } |
3091 | 3091 |
3092 } // namespace dart | 3092 } // namespace dart |
3093 | 3093 |
3094 #endif // defined TARGET_ARCH_X64 | 3094 #endif // defined TARGET_ARCH_X64 |
OLD | NEW |