< 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   }

 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 
 76   void call_VM_preemptable_helper(Register oop_result,
 77                                   address entry_point,
 78                                   int number_of_arguments,
 79                                   bool check_exceptions);
 80   void restore_after_resume(bool is_native);
 81 
 82   // Interpreter-specific registers
 83   void save_bcp() {
 84     movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), _bcp_register);
 85   }
 86 
 87   void restore_bcp() {
 88     movptr(_bcp_register, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize));
 89   }
 90 
 91   void restore_locals() {
 92     movptr(_locals_register, Address(rbp, frame::interpreter_frame_locals_offset * wordSize));
 93     lea(_locals_register, Address(rbp, _locals_register, Address::times_ptr));
 94   }
 95 
 96   // Helpers for runtime call arguments/results
 97   void get_method(Register reg) {
 98     movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
 99   }
< prev index next >