104 void push_addr (Address a) { _rsp_offset++; pushptr(a); }
105 void push_reg (Register r) { _rsp_offset++; push(r); }
106 void pop_reg (Register r) { _rsp_offset--; pop(r); assert(_rsp_offset >= 0, "stack offset underflow"); }
107
108 void dec_stack (int nof_words) {
109 _rsp_offset -= nof_words;
110 assert(_rsp_offset >= 0, "stack offset underflow");
111 addptr(rsp, wordSize * nof_words);
112 }
113
114 void dec_stack_after_call (int nof_words) {
115 _rsp_offset -= nof_words;
116 assert(_rsp_offset >= 0, "stack offset underflow");
117 }
118
119 void invalidate_registers(bool inv_rax, bool inv_rbx, bool inv_rcx, bool inv_rdx, bool inv_rsi, bool inv_rdi) PRODUCT_RETURN;
120
121 // This platform only uses signal-based null checks. The Label is not needed.
122 void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
123
124 #endif // CPU_X86_VM_C1_MACROASSEMBLER_X86_HPP
|
104 void push_addr (Address a) { _rsp_offset++; pushptr(a); }
105 void push_reg (Register r) { _rsp_offset++; push(r); }
106 void pop_reg (Register r) { _rsp_offset--; pop(r); assert(_rsp_offset >= 0, "stack offset underflow"); }
107
108 void dec_stack (int nof_words) {
109 _rsp_offset -= nof_words;
110 assert(_rsp_offset >= 0, "stack offset underflow");
111 addptr(rsp, wordSize * nof_words);
112 }
113
114 void dec_stack_after_call (int nof_words) {
115 _rsp_offset -= nof_words;
116 assert(_rsp_offset >= 0, "stack offset underflow");
117 }
118
119 void invalidate_registers(bool inv_rax, bool inv_rbx, bool inv_rcx, bool inv_rdx, bool inv_rsi, bool inv_rdi) PRODUCT_RETURN;
120
121 // This platform only uses signal-based null checks. The Label is not needed.
122 void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
123
124 void load_parameter(int offset_in_words, Register reg);
125
126 void save_live_registers_no_oop_map(int num_rt_args, bool save_fpu_registers);
127 void restore_live_registers(bool restore_fpu_registers);
128
129 #endif // CPU_X86_VM_C1_MACROASSEMBLER_X86_HPP
|