< prev index next >

src/hotspot/cpu/x86/interp_masm_x86.hpp

Print this page




 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);




 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 "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   // Allocate value buffer in "obj" and read in flattened element at the given index
 241   // NOTES:
 242   //   - Return via "obj" must be rax
 243   //   - kills all given regs
 244   //   - 32 bits: kills rdi and rsi
 245   void read_flattened_element(Register array, Register index,
 246                               Register t1, Register t2,
 247                               Register obj = rax);
 248 
 249   // Object locking
 250   void lock_object  (Register lock_reg);
 251   void unlock_object(Register lock_reg);
 252 
 253   // Interpreter profiling operations
 254   void set_method_data_pointer_for_bcp();
 255   void test_method_data_pointer(Register mdp, Label& zero_continue);
 256   void verify_method_data_pointer();
 257 
 258   void set_mdp_data_at(Register mdp_in, int constant, Register value);
 259   void increment_mdp_data_at(Address data, bool decrement = false);
 260   void increment_mdp_data_at(Register mdp_in, int constant,
 261                              bool decrement = false);
 262   void increment_mdp_data_at(Register mdp_in, Register reg, int constant,
 263                              bool decrement = false);
 264   void increment_mask_and_jump(Address counter_addr,
 265                                int increment, Address mask,
 266                                Register scratch, bool preloaded,
 267                                Condition cond, Label* where);


< prev index next >