hotspot/src/cpu/sparc/vm/interp_masm_sparc.hpp
changeset 5419 f2e8cc8c12ea
parent 5416 5f6377fcfd3e
child 5688 9052dc91ea67
child 5547 f4b087cbb361
equal deleted inserted replaced
5418:c4955cb6ed33 5419:f2e8cc8c12ea
   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 );