src/cpu/sparc/vm/interp_masm_sparc.hpp

changeset 1861
2338d41fbd81
parent 1858
c640000b7cc1
child 1907
c18cbe5936b8
child 1920
ab102d5d923e
equal deleted inserted replaced
1860:0c5b3cf3c1f5 1861:2338d41fbd81
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 );

mercurial