< prev index next >

src/hotspot/cpu/x86/interp_masm_x86.hpp

Print this page




 206   void narrow(Register result);
 207 
 208   // Returning from interpreted functions
 209   //
 210   // Removes the current activation (incl. unlocking of monitors)
 211   // and sets up the return address.  This code is also used for
 212   // exception unwindwing. In that case, we do not want to throw
 213   // IllegalMonitorStateExceptions, since that might get us into an
 214   // infinite rethrow exception loop.
 215   // Additionally this code is used for popFrame and earlyReturn.
 216   // In popFrame case we want to skip throwing an exception,
 217   // installing an exception, and notifying jvmdi.
 218   // In earlyReturn case we only want to skip throwing an exception
 219   // and installing an exception.
 220   void remove_activation(TosState state, Register ret_addr,
 221                          bool throw_monitor_exception = true,
 222                          bool install_monitor_exception = true,
 223                          bool notify_jvmdi = true);
 224   void get_method_counters(Register method, Register mcs, Label& skip);
 225 














 226   // Object locking
 227   void lock_object  (Register lock_reg);
 228   void unlock_object(Register lock_reg);
 229 
 230   // Interpreter profiling operations
 231   void set_method_data_pointer_for_bcp();
 232   void test_method_data_pointer(Register mdp, Label& zero_continue);
 233   void verify_method_data_pointer();
 234 
 235   void set_mdp_data_at(Register mdp_in, int constant, Register value);
 236   void increment_mdp_data_at(Address data, bool decrement = false);
 237   void increment_mdp_data_at(Register mdp_in, int constant,
 238                              bool decrement = false);
 239   void increment_mdp_data_at(Register mdp_in, Register reg, int constant,
 240                              bool decrement = false);
 241   void increment_mask_and_jump(Address counter_addr,
 242                                int increment, Address mask,
 243                                Register scratch, bool preloaded,
 244                                Condition cond, Label* where);
 245   void set_mdp_flag_at(Register mdp_in, int flag_constant);




 206   void narrow(Register result);
 207 
 208   // Returning from interpreted functions
 209   //
 210   // Removes the current activation (incl. unlocking of monitors)
 211   // and sets up the return address.  This code is also used for
 212   // exception unwindwing. In that case, we do not want to throw
 213   // IllegalMonitorStateExceptions, since that might get us into an
 214   // infinite rethrow exception loop.
 215   // Additionally this code is used for popFrame and earlyReturn.
 216   // In popFrame case we want to skip throwing an exception,
 217   // installing an exception, and notifying jvmdi.
 218   // In earlyReturn case we only want to skip throwing an exception
 219   // and installing an exception.
 220   void remove_activation(TosState state, Register ret_addr,
 221                          bool throw_monitor_exception = true,
 222                          bool install_monitor_exception = true,
 223                          bool notify_jvmdi = true);
 224   void get_method_counters(Register method, Register mcs, Label& skip);
 225 
 226   // Kills t1 and t2, perserves klass, return allocation in new_obj
 227   void allocate_instance(Register klass, Register new_obj,
 228                          Register t1, Register t2,
 229                          bool clear_fields, Label& alloc_failed);
 230   // Allocate value buffer in new_obj and read in flattened field
 231   // NOTES:
 232   //   - input holder object via "obj", which must be rax,
 233   //     will return new value buffer obj via the same reg
 234   //   - assumes holder_klass and valueKlass field klass have both been resolved
 235   //   - 32 bits: kills rdi and rsi
 236   void read_flattened_field(Register holder_klass,
 237                             Register field_index, Register field_offset,
 238                             Register obj = rax);
 239 
 240   // Object locking
 241   void lock_object  (Register lock_reg);
 242   void unlock_object(Register lock_reg);
 243 
 244   // Interpreter profiling operations
 245   void set_method_data_pointer_for_bcp();
 246   void test_method_data_pointer(Register mdp, Label& zero_continue);
 247   void verify_method_data_pointer();
 248 
 249   void set_mdp_data_at(Register mdp_in, int constant, Register value);
 250   void increment_mdp_data_at(Address data, bool decrement = false);
 251   void increment_mdp_data_at(Register mdp_in, int constant,
 252                              bool decrement = false);
 253   void increment_mdp_data_at(Register mdp_in, Register reg, int constant,
 254                              bool decrement = false);
 255   void increment_mask_and_jump(Address counter_addr,
 256                                int increment, Address mask,
 257                                Register scratch, bool preloaded,
 258                                Condition cond, Label* where);
 259   void set_mdp_flag_at(Register mdp_in, int flag_constant);


< prev index next >