147 void pop_f(FloatRegister f = Ftos_f, Register scratch = G1_scratch); |
147 void pop_f(FloatRegister f = Ftos_f, Register scratch = G1_scratch); |
148 void pop_d(FloatRegister f = Ftos_d1, Register scratch = G1_scratch); |
148 void pop_d(FloatRegister f = Ftos_d1, Register scratch = G1_scratch); |
149 |
149 |
150 void push_i( Register r = Otos_i); |
150 void push_i( Register r = Otos_i); |
151 void push_ptr( Register r = Otos_i); |
151 void push_ptr( Register r = Otos_i); |
152 void push_ptr( Register r, Register tag); |
|
153 void push_l( Register r = Otos_l1); |
152 void push_l( Register r = Otos_l1); |
154 void push_f(FloatRegister f = Ftos_f); |
153 void push_f(FloatRegister f = Ftos_f); |
155 void push_d(FloatRegister f = Ftos_d1); |
154 void push_d(FloatRegister f = Ftos_d1); |
156 |
155 |
157 |
156 |
158 void pop (TosState state); // transition vtos -> state |
157 void pop (TosState state); // transition vtos -> state |
159 void push(TosState state); // transition state -> vtos |
158 void push(TosState state); // transition state -> vtos |
160 void empty_expression_stack(); // resets both Lesp and SP |
159 void empty_expression_stack(); // resets both Lesp and SP |
161 |
160 |
162 // Support for Tagged Stacks |
|
163 void tag_stack(frame::Tag t, Register r); |
|
164 void tag_stack(Register tag); |
|
165 void tag_local(frame::Tag t, Register src, Register base, int n = 0); |
|
166 |
|
167 #ifdef ASSERT |
161 #ifdef ASSERT |
168 void verify_sp(Register Rsp, Register Rtemp); |
162 void verify_sp(Register Rsp, Register Rtemp); |
169 void verify_esp(Register Resp); // verify that Lesp points to a word in the temp stack |
163 void verify_esp(Register Resp); // verify that Lesp points to a word in the temp stack |
170 |
|
171 void verify_stack_tag(frame::Tag t, Register r, Register scratch = G0); |
|
172 void verify_local_tag(frame::Tag t, Register base, Register scr, int n = 0); |
|
173 #endif // ASSERT |
164 #endif // ASSERT |
174 |
165 |
175 public: |
166 public: |
176 void if_cmp(Condition cc, bool ptr_compare); |
167 void if_cmp(Condition cc, bool ptr_compare); |
177 |
168 |
240 void access_local_double( Register index, FloatRegister dst ); |
231 void access_local_double( Register index, FloatRegister dst ); |
241 #ifdef ASSERT |
232 #ifdef ASSERT |
242 void check_for_regarea_stomp( Register Rindex, int offset, Register Rlimit, Register Rscratch, Register Rscratch1); |
233 void check_for_regarea_stomp( Register Rindex, int offset, Register Rlimit, Register Rscratch, Register Rscratch1); |
243 #endif // ASSERT |
234 #endif // ASSERT |
244 void store_local_int( Register index, Register src ); |
235 void store_local_int( Register index, Register src ); |
245 void store_local_ptr( Register index, Register src, Register tag = Otos_l2 ); |
236 void store_local_ptr( Register index, Register src ); |
246 void store_local_ptr( int n, Register src, Register tag = Otos_l2 ); |
237 void store_local_ptr( int n, Register src ); |
247 void store_local_long( Register index, Register src ); |
238 void store_local_long( Register index, Register src ); |
248 void store_local_float( Register index, FloatRegister src ); |
239 void store_local_float( Register index, FloatRegister src ); |
249 void store_local_double( Register index, FloatRegister src ); |
240 void store_local_double( Register index, FloatRegister src ); |
250 |
241 |
251 // Tagged stack helpers for swap and dup |
242 // Helpers for swap and dup |
252 void load_ptr_and_tag(int n, Register val, Register tag); |
243 void load_ptr(int n, Register val); |
253 void store_ptr_and_tag(int n, Register val, Register tag); |
244 void store_ptr(int n, Register val); |
254 |
245 |
255 // Tagged stack helper for getting receiver in register. |
246 // Helper for getting receiver in register. |
256 void load_receiver(Register param_count, Register recv); |
247 void load_receiver(Register param_count, Register recv); |
257 |
248 |
258 static int top_most_monitor_byte_offset(); // offset in bytes to top of monitor block |
249 static int top_most_monitor_byte_offset(); // offset in bytes to top of monitor block |
259 Address top_most_monitor(); |
250 Address top_most_monitor(); |
260 void compute_stack_base( Register Rdest ); |
251 void compute_stack_base( Register Rdest ); |