< prev index next >

src/hotspot/cpu/ppc/interp_masm_ppc.hpp

Print this page
*** 47,10 ***
--- 47,18 ---
  #define method_(field_name) in_bytes(Method::field_name ## _offset()), R19_method
  
    virtual void check_and_handle_popframe(Register scratch_reg);
    virtual void check_and_handle_earlyret(Register scratch_reg);
  
+   void call_VM_preemptable(Register oop_result, address entry_point, Register arg_1, bool check_exceptions = true);
+   void restore_after_resume(Register fp);
+   // R22 and R31 are preserved when a vthread gets preempted in the interpreter.
+   // The interpreter already assumes that these registers are nonvolatile across native calls.
+   bool nonvolatile_accross_vthread_preemtion(Register r) const {
+     return r->is_nonvolatile() && ((r == R22) || (r == R31));
+   }
+ 
    // Base routine for all dispatches.
    void dispatch_base(TosState state, address* table);
  
    void load_earlyret_value(TosState state, Register Rscratch1);
  

*** 180,11 ***
  
    // Call VM for std frames
    // Special call VM versions that check for exceptions and forward exception
    // via short cut (not via expensive forward exception stub).
    void check_and_forward_exception(Register Rscratch1, Register Rscratch2);
!   void call_VM(Register oop_result, address entry_point, bool check_exceptions = true);
    void call_VM(Register oop_result, address entry_point, Register arg_1, bool check_exceptions = true);
    void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
    void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions = true);
    // Should not be used:
    void call_VM(Register oop_result, Register last_java_sp, address entry_point, bool check_exceptions = true) {ShouldNotReachHere();}
--- 188,11 ---
  
    // Call VM for std frames
    // Special call VM versions that check for exceptions and forward exception
    // via short cut (not via expensive forward exception stub).
    void check_and_forward_exception(Register Rscratch1, Register Rscratch2);
!   void call_VM(Register oop_result, address entry_point, bool check_exceptions = true, Label* last_java_pc = nullptr);
    void call_VM(Register oop_result, address entry_point, Register arg_1, bool check_exceptions = true);
    void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
    void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions = true);
    // Should not be used:
    void call_VM(Register oop_result, Register last_java_sp, address entry_point, bool check_exceptions = true) {ShouldNotReachHere();}
< prev index next >