< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp

Print this page

  64 
  65   virtual void call_VM_leaf_base(
  66     address entry_point,               // the entry point
  67     int     number_of_arguments,        // the number of arguments to pop after the call
  68     Label &retaddr) {
  69     call_VM_leaf_base(entry_point, number_of_arguments, &retaddr);
  70   }
  71 
  72   // This is the base routine called by the different versions of call_VM. The interpreter
  73   // may customize this version by overriding it for its purposes (e.g., to save/restore
  74   // additional registers when doing a VM call).
  75   //
  76   // If no java_thread register is specified (noreg) than rthread will be used instead. call_VM_base
  77   // returns the register which contains the thread upon return. If a thread register has been
  78   // specified, the return value will correspond to that register. If no last_java_sp is specified
  79   // (noreg) than rsp will be used instead.
  80   virtual void call_VM_base(           // returns the register containing the thread upon return
  81     Register oop_result,               // where an oop-result ends up if any; use noreg otherwise
  82     Register java_thread,              // the thread if computed before     ; use noreg otherwise
  83     Register last_java_sp,             // to set up last_Java_frame in stubs; use noreg otherwise

  84     address  entry_point,              // the entry point
  85     int      number_of_arguments,      // the number of arguments (w/o thread) to pop after the call
  86     bool     check_exceptions          // whether to check for pending exceptions after return
  87   );
  88 
  89   void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
  90 
  91   enum KlassDecodeMode {
  92     KlassDecodeNone,
  93     KlassDecodeZero,
  94     KlassDecodeXor,
  95     KlassDecodeMovk
  96   };
  97 
  98   // Calculate decoding mode based on given parameters, used for checking then ultimately setting.
  99   static KlassDecodeMode klass_decode_mode(address base, int shift, const size_t range);
 100 
 101  private:
 102   static KlassDecodeMode _klass_decode_mode;
 103 

  64 
  65   virtual void call_VM_leaf_base(
  66     address entry_point,               // the entry point
  67     int     number_of_arguments,        // the number of arguments to pop after the call
  68     Label &retaddr) {
  69     call_VM_leaf_base(entry_point, number_of_arguments, &retaddr);
  70   }
  71 
  72   // This is the base routine called by the different versions of call_VM. The interpreter
  73   // may customize this version by overriding it for its purposes (e.g., to save/restore
  74   // additional registers when doing a VM call).
  75   //
  76   // If no java_thread register is specified (noreg) than rthread will be used instead. call_VM_base
  77   // returns the register which contains the thread upon return. If a thread register has been
  78   // specified, the return value will correspond to that register. If no last_java_sp is specified
  79   // (noreg) than rsp will be used instead.
  80   virtual void call_VM_base(           // returns the register containing the thread upon return
  81     Register oop_result,               // where an oop-result ends up if any; use noreg otherwise
  82     Register java_thread,              // the thread if computed before     ; use noreg otherwise
  83     Register last_java_sp,             // to set up last_Java_frame in stubs; use noreg otherwise
  84     Label*   return_pc,                // to set up last_Java_frame; use nullptr otherwise
  85     address  entry_point,              // the entry point
  86     int      number_of_arguments,      // the number of arguments (w/o thread) to pop after the call
  87     bool     check_exceptions          // whether to check for pending exceptions after return
  88   );
  89 
  90   void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
  91 
  92   enum KlassDecodeMode {
  93     KlassDecodeNone,
  94     KlassDecodeZero,
  95     KlassDecodeXor,
  96     KlassDecodeMovk
  97   };
  98 
  99   // Calculate decoding mode based on given parameters, used for checking then ultimately setting.
 100   static KlassDecodeMode klass_decode_mode(address base, int shift, const size_t range);
 101 
 102  private:
 103   static KlassDecodeMode _klass_decode_mode;
 104 
< prev index next >