| 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 #ifndef VM_ASSEMBLER_X64_H_ | 5 #ifndef VM_ASSEMBLER_X64_H_ |
| 6 #define VM_ASSEMBLER_X64_H_ | 6 #define VM_ASSEMBLER_X64_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_x64.h directly; use assembler.h instead. | 9 #error Do not include assembler_x64.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 // This code sets this up with the sequence: | 792 // This code sets this up with the sequence: |
| 793 // pushq rbp | 793 // pushq rbp |
| 794 // movq rbp, rsp | 794 // movq rbp, rsp |
| 795 // call L | 795 // call L |
| 796 // L: <code to adjust saved pc if there is any intrinsification code> | 796 // L: <code to adjust saved pc if there is any intrinsification code> |
| 797 // ... | 797 // ... |
| 798 // pushq r15 | 798 // pushq r15 |
| 799 // ..... | 799 // ..... |
| 800 void EnterDartFrame(intptr_t frame_size); | 800 void EnterDartFrame(intptr_t frame_size); |
| 801 void EnterDartFrameWithInfo(intptr_t frame_size, | 801 void EnterDartFrameWithInfo(intptr_t frame_size, |
| 802 Register new_pp, Register new_pc); | 802 Register new_pp, Register pc_marker_override); |
| 803 void LeaveDartFrame(); | 803 void LeaveDartFrame(); |
| 804 | 804 |
| 805 // Set up a Dart frame for a function compiled for on-stack replacement. | 805 // Set up a Dart frame for a function compiled for on-stack replacement. |
| 806 // The frame layout is a normal Dart frame, but the frame is partially set | 806 // The frame layout is a normal Dart frame, but the frame is partially set |
| 807 // up on entry (it is the frame of the unoptimized code). | 807 // up on entry (it is the frame of the unoptimized code). |
| 808 void EnterOsrFrame(intptr_t extra_size, Register new_pp, Register new_pc); | 808 void EnterOsrFrame(intptr_t extra_size, |
| 809 Register new_pp, Register pc_marker_override); |
| 809 | 810 |
| 810 // Set up a stub frame so that the stack traversal code can easily identify | 811 // Set up a stub frame so that the stack traversal code can easily identify |
| 811 // a stub frame. | 812 // a stub frame. |
| 812 // The stub frame layout is as follows: | 813 // The stub frame layout is as follows: |
| 813 // .... <=== RSP | 814 // .... <=== RSP |
| 814 // pc (used to derive the RawInstruction Object of the stub) | 815 // pc (used to derive the RawInstruction Object of the stub) |
| 815 // saved RBP <=== RBP | 816 // saved RBP <=== RBP |
| 816 // ret PC | 817 // ret PC |
| 817 // ..... | 818 // ..... |
| 818 // This code sets this up with the sequence: | 819 // This code sets this up with the sequence: |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1064 } | 1065 } |
| 1065 | 1066 |
| 1066 | 1067 |
| 1067 inline void Assembler::EmitOperandSizeOverride() { | 1068 inline void Assembler::EmitOperandSizeOverride() { |
| 1068 EmitUint8(0x66); | 1069 EmitUint8(0x66); |
| 1069 } | 1070 } |
| 1070 | 1071 |
| 1071 } // namespace dart | 1072 } // namespace dart |
| 1072 | 1073 |
| 1073 #endif // VM_ASSEMBLER_X64_H_ | 1074 #endif // VM_ASSEMBLER_X64_H_ |
| OLD | NEW |