hotspot/src/cpu/aarch64/vm/interp_masm_aarch64.hpp
changeset 35232 76aed99c0ddd
parent 35214 d86005e0b4c2
parent 35148 5cfafc99d791
child 38072 964dfd630089
equal deleted inserted replaced
35231:e89989198037 35232:76aed99c0ddd
    31 #include "interpreter/invocationCounter.hpp"
    31 #include "interpreter/invocationCounter.hpp"
    32 #include "runtime/frame.hpp"
    32 #include "runtime/frame.hpp"
    33 
    33 
    34 // This file specializes the assember with interpreter-specific macros
    34 // This file specializes the assember with interpreter-specific macros
    35 
    35 
       
    36 typedef ByteSize (*OffsetFunction)(uint);
    36 
    37 
    37 class InterpreterMacroAssembler: public MacroAssembler {
    38 class InterpreterMacroAssembler: public MacroAssembler {
    38  protected:
    39  protected:
    39 
    40 
    40  protected:
    41  protected:
   232   void record_klass_in_profile(Register receiver, Register mdp,
   233   void record_klass_in_profile(Register receiver, Register mdp,
   233                                Register reg2, bool is_virtual_call);
   234                                Register reg2, bool is_virtual_call);
   234   void record_klass_in_profile_helper(Register receiver, Register mdp,
   235   void record_klass_in_profile_helper(Register receiver, Register mdp,
   235                                       Register reg2, int start_row,
   236                                       Register reg2, int start_row,
   236                                       Label& done, bool is_virtual_call);
   237                                       Label& done, bool is_virtual_call);
       
   238   void record_item_in_profile_helper(Register item, Register mdp,
       
   239                                      Register reg2, int start_row, Label& done, int total_rows,
       
   240                                      OffsetFunction item_offset_fn, OffsetFunction item_count_offset_fn,
       
   241                                      int non_profiled_offset);
   237 
   242 
   238   void update_mdp_by_offset(Register mdp_in, int offset_of_offset);
   243   void update_mdp_by_offset(Register mdp_in, int offset_of_offset);
   239   void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp);
   244   void update_mdp_by_offset(Register mdp_in, Register reg, int offset_of_disp);
   240   void update_mdp_by_constant(Register mdp_in, int constant);
   245   void update_mdp_by_constant(Register mdp_in, int constant);
   241   void update_mdp_for_ret(Register return_bci);
   246   void update_mdp_for_ret(Register return_bci);
   245   void profile_call(Register mdp);
   250   void profile_call(Register mdp);
   246   void profile_final_call(Register mdp);
   251   void profile_final_call(Register mdp);
   247   void profile_virtual_call(Register receiver, Register mdp,
   252   void profile_virtual_call(Register receiver, Register mdp,
   248                             Register scratch2,
   253                             Register scratch2,
   249                             bool receiver_can_be_null = false);
   254                             bool receiver_can_be_null = false);
       
   255   void profile_called_method(Register method, Register mdp, Register reg2) NOT_JVMCI_RETURN;
   250   void profile_ret(Register return_bci, Register mdp);
   256   void profile_ret(Register return_bci, Register mdp);
   251   void profile_null_seen(Register mdp);
   257   void profile_null_seen(Register mdp);
   252   void profile_typecheck(Register mdp, Register klass, Register scratch);
   258   void profile_typecheck(Register mdp, Register klass, Register scratch);
   253   void profile_typecheck_failed(Register mdp);
   259   void profile_typecheck_failed(Register mdp);
   254   void profile_switch_default(Register mdp);
   260   void profile_switch_default(Register mdp);