src/cpu/x86/vm/interp_masm_x86_32.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot-dvm Sdiff src/cpu/x86/vm

src/cpu/x86/vm/interp_masm_x86_32.hpp

Print this page
rev 423 : imported patch indy.patch


  59 #ifdef CC_INTERP
  60   void save_bcp()                                          { /*  not needed in c++ interpreter and harmless */ }
  61   void restore_bcp()                                       { /*  not needed in c++ interpreter and harmless */ }
  62 
  63   // Helpers for runtime call arguments/results
  64   void get_method(Register reg);
  65 
  66 #else
  67 
  68   void save_bcp()                                          { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); }
  69   void restore_bcp()                                       { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); }
  70   void restore_locals()                                    { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
  71 
  72   // Helpers for runtime call arguments/results
  73   void get_method(Register reg)                            { movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); }
  74   void get_constant_pool(Register reg)                     { get_method(reg); movptr(reg, Address(reg, methodOopDesc::constants_offset())); }
  75   void get_constant_pool_cache(Register reg)               { get_constant_pool(reg); movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); }
  76   void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
  77   }
  78   void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
  79   void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset);
  80   void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset);

  81 
  82   // Expression stack
  83   void f2ieee();                                           // truncate ftos to 32bits
  84   void d2ieee();                                           // truncate dtos to 64bits
  85 
  86   void pop_ptr(Register r = rax);
  87   void pop_ptr(Register r, Register tag);
  88   void pop_i(Register r = rax);
  89   void pop_l(Register lo = rax, Register hi = rdx);
  90   void pop_f();
  91   void pop_d();
  92   void pop_ftos_to_rsp();
  93   void pop_dtos_to_rsp();
  94 
  95   void push_ptr(Register r = rax);
  96   void push_ptr(Register r, Register tag);
  97   void push_i(Register r = rax);
  98   void push_l(Register lo = rax, Register hi = rdx);
  99   void push_d(Register r = rax);
 100   void push_f();


 209   void set_mdp_flag_at(Register mdp_in, int flag_constant);
 210   void test_mdp_data_at(Register mdp_in, int offset, Register value,
 211                         Register test_value_out,
 212                         Label& not_equal_continue);
 213 
 214   void record_klass_in_profile(Register receiver, Register mdp,
 215                                Register reg2);
 216   void record_klass_in_profile_helper(Register receiver, Register mdp,
 217                                       Register reg2,
 218                                       int start_row, Label& done);
 219 
 220   void update_mdp_by_offset(Register mdp_in, int offset_of_offset);
 221   void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp);
 222   void update_mdp_by_constant(Register mdp_in, int constant);
 223   void update_mdp_for_ret(Register return_bci);
 224 
 225   void profile_taken_branch(Register mdp, Register bumped_count);
 226   void profile_not_taken_branch(Register mdp);
 227   void profile_call(Register mdp);
 228   void profile_final_call(Register mdp);
 229   void profile_virtual_call(Register receiver, Register mdp, Register scratch2);

 230   void profile_ret(Register return_bci, Register mdp);
 231   void profile_null_seen(Register mdp);
 232   void profile_typecheck(Register mdp, Register klass, Register scratch);
 233   void profile_typecheck_failed(Register mdp);
 234   void profile_switch_default(Register mdp);
 235   void profile_switch_case(Register index_in_scratch, Register mdp, Register scratch2);
 236 
 237 #endif /* !CC_INTERP */
 238 
 239   typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
 240 
 241   // support for jvmti
 242   void notify_method_entry();
 243   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 244 
 245 };


  59 #ifdef CC_INTERP
  60   void save_bcp()                                          { /*  not needed in c++ interpreter and harmless */ }
  61   void restore_bcp()                                       { /*  not needed in c++ interpreter and harmless */ }
  62 
  63   // Helpers for runtime call arguments/results
  64   void get_method(Register reg);
  65 
  66 #else
  67 
  68   void save_bcp()                                          { movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), rsi); }
  69   void restore_bcp()                                       { movptr(rsi, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize)); }
  70   void restore_locals()                                    { movptr(rdi, Address(rbp, frame::interpreter_frame_locals_offset * wordSize)); }
  71 
  72   // Helpers for runtime call arguments/results
  73   void get_method(Register reg)                            { movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); }
  74   void get_constant_pool(Register reg)                     { get_method(reg); movptr(reg, Address(reg, methodOopDesc::constants_offset())); }
  75   void get_constant_pool_cache(Register reg)               { get_constant_pool(reg); movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); }
  76   void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
  77   }
  78   void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
  79   void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, bool giant_index = false);
  80   void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, bool giant_index = false);
  81   void get_cache_index_at_bcp(Register index, int bcp_offset, bool giant_index = false);
  82 
  83   // Expression stack
  84   void f2ieee();                                           // truncate ftos to 32bits
  85   void d2ieee();                                           // truncate dtos to 64bits
  86 
  87   void pop_ptr(Register r = rax);
  88   void pop_ptr(Register r, Register tag);
  89   void pop_i(Register r = rax);
  90   void pop_l(Register lo = rax, Register hi = rdx);
  91   void pop_f();
  92   void pop_d();
  93   void pop_ftos_to_rsp();
  94   void pop_dtos_to_rsp();
  95 
  96   void push_ptr(Register r = rax);
  97   void push_ptr(Register r, Register tag);
  98   void push_i(Register r = rax);
  99   void push_l(Register lo = rax, Register hi = rdx);
 100   void push_d(Register r = rax);
 101   void push_f();


 210   void set_mdp_flag_at(Register mdp_in, int flag_constant);
 211   void test_mdp_data_at(Register mdp_in, int offset, Register value,
 212                         Register test_value_out,
 213                         Label& not_equal_continue);
 214 
 215   void record_klass_in_profile(Register receiver, Register mdp,
 216                                Register reg2);
 217   void record_klass_in_profile_helper(Register receiver, Register mdp,
 218                                       Register reg2,
 219                                       int start_row, Label& done);
 220 
 221   void update_mdp_by_offset(Register mdp_in, int offset_of_offset);
 222   void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp);
 223   void update_mdp_by_constant(Register mdp_in, int constant);
 224   void update_mdp_for_ret(Register return_bci);
 225 
 226   void profile_taken_branch(Register mdp, Register bumped_count);
 227   void profile_not_taken_branch(Register mdp);
 228   void profile_call(Register mdp);
 229   void profile_final_call(Register mdp);
 230   void profile_virtual_call(Register receiver, Register mdp, Register scratch2,
 231                             bool receiver_can_be_null = false);
 232   void profile_ret(Register return_bci, Register mdp);
 233   void profile_null_seen(Register mdp);
 234   void profile_typecheck(Register mdp, Register klass, Register scratch);
 235   void profile_typecheck_failed(Register mdp);
 236   void profile_switch_default(Register mdp);
 237   void profile_switch_case(Register index_in_scratch, Register mdp, Register scratch2);
 238 
 239 #endif /* !CC_INTERP */
 240 
 241   typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
 242 
 243   // support for jvmti
 244   void notify_method_entry();
 245   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 246 
 247 };
src/cpu/x86/vm/interp_masm_x86_32.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File