< prev index next >

src/hotspot/cpu/x86/interp_masm_x86.hpp

Print this page

 45                             Register last_java_sp,
 46                             address  entry_point,
 47                             int number_of_arguments,
 48                             bool check_exceptions);
 49 
 50   // base routine for all dispatches
 51   void dispatch_base(TosState state, address* table, bool verifyoop = true, bool generate_poll = false);
 52 
 53  public:
 54   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
 55     _locals_register(r14),
 56     _bcp_register(r13) {}
 57 
 58   void jump_to_entry(address entry);
 59 
 60  virtual void check_and_handle_popframe();
 61  virtual void check_and_handle_earlyret();
 62 
 63   void load_earlyret_value(TosState state);
 64 

 65   void call_VM_preemptable(Register oop_result,
 66                            address entry_point,
 67                            Register arg_1);






 68   void restore_after_resume(bool is_native);





 69 

 70   // Interpreter-specific registers
 71   void save_bcp() {
 72     movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), _bcp_register);
 73   }
 74 
 75   void restore_bcp() {
 76     movptr(_bcp_register, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize));
 77   }
 78 
 79   void restore_locals() {
 80     movptr(_locals_register, Address(rbp, frame::interpreter_frame_locals_offset * wordSize));
 81     lea(_locals_register, Address(rbp, _locals_register, Address::times_ptr));
 82   }
 83 
 84   // Helpers for runtime call arguments/results
 85   void get_method(Register reg) {
 86     movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
 87   }
 88 
 89   void get_const(Register reg) {

 45                             Register last_java_sp,
 46                             address  entry_point,
 47                             int number_of_arguments,
 48                             bool check_exceptions);
 49 
 50   // base routine for all dispatches
 51   void dispatch_base(TosState state, address* table, bool verifyoop = true, bool generate_poll = false);
 52 
 53  public:
 54   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
 55     _locals_register(r14),
 56     _bcp_register(r13) {}
 57 
 58   void jump_to_entry(address entry);
 59 
 60  virtual void check_and_handle_popframe();
 61  virtual void check_and_handle_earlyret();
 62 
 63   void load_earlyret_value(TosState state);
 64 
 65   // Use for vthread preemption
 66   void call_VM_preemptable(Register oop_result,
 67                            address entry_point,
 68                            Register arg_1,
 69                            bool check_exceptions = true);
 70   void call_VM_preemptable(Register oop_result,
 71                            address entry_point,
 72                            Register arg_1,
 73                            Register arg_2,
 74                            bool check_exceptions = true);
 75   void restore_after_resume(bool is_native);
 76  private:
 77   void call_VM_preemptable_helper(Register oop_result,
 78                                   address entry_point,
 79                                   int number_of_arguments,
 80                                   bool check_exceptions);
 81 
 82  public:
 83   // Interpreter-specific registers
 84   void save_bcp() {
 85     movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), _bcp_register);
 86   }
 87 
 88   void restore_bcp() {
 89     movptr(_bcp_register, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize));
 90   }
 91 
 92   void restore_locals() {
 93     movptr(_locals_register, Address(rbp, frame::interpreter_frame_locals_offset * wordSize));
 94     lea(_locals_register, Address(rbp, _locals_register, Address::times_ptr));
 95   }
 96 
 97   // Helpers for runtime call arguments/results
 98   void get_method(Register reg) {
 99     movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
100   }
101 
102   void get_const(Register reg) {
< prev index next >