1 /* |
1 /* |
2 * Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved. |
2 * Copyright 2003-2010 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
118 void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); } |
118 void push(int32_t imm ) { ((MacroAssembler*)this)->push(imm); } |
119 |
119 |
120 void pop(TosState state); // transition vtos -> state |
120 void pop(TosState state); // transition vtos -> state |
121 void push(TosState state); // transition state -> vtos |
121 void push(TosState state); // transition state -> vtos |
122 |
122 |
123 // Tagged stack support, pop and push both tag and value. |
123 void empty_expression_stack() { |
124 void pop_ptr(Register r, Register tag); |
|
125 void push_ptr(Register r, Register tag); |
|
126 #endif // CC_INTERP |
|
127 |
|
128 DEBUG_ONLY(void verify_stack_tag(frame::Tag t);) |
|
129 |
|
130 #ifndef CC_INTERP |
|
131 |
|
132 // Tagged stack helpers for swap and dup |
|
133 void load_ptr_and_tag(int n, Register val, Register tag); |
|
134 void store_ptr_and_tag(int n, Register val, Register tag); |
|
135 |
|
136 // Tagged Local support |
|
137 void tag_local(frame::Tag tag, int n); |
|
138 void tag_local(Register tag, int n); |
|
139 void tag_local(frame::Tag tag, Register idx); |
|
140 void tag_local(Register tag, Register idx); |
|
141 |
|
142 #ifdef ASSERT |
|
143 void verify_local_tag(frame::Tag tag, int n); |
|
144 void verify_local_tag(frame::Tag tag, Register idx); |
|
145 #endif // ASSERT |
|
146 |
|
147 |
|
148 void empty_expression_stack() |
|
149 { |
|
150 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); |
124 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); |
151 // NULL last_sp until next java call |
125 // NULL last_sp until next java call |
152 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); |
126 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); |
153 } |
127 } |
|
128 |
|
129 // Helpers for swap and dup |
|
130 void load_ptr(int n, Register val); |
|
131 void store_ptr(int n, Register val); |
154 |
132 |
155 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls |
133 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls |
156 void super_call_VM_leaf(address entry_point); |
134 void super_call_VM_leaf(address entry_point); |
157 void super_call_VM_leaf(address entry_point, Register arg_1); |
135 void super_call_VM_leaf(address entry_point, Register arg_1); |
158 void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2); |
136 void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2); |