< prev index next >

src/hotspot/cpu/ppc/interp_masm_ppc.hpp

Print this page
*** 83,11 ***
                       address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
  
    // Generate a subtype check: branch to ok_is_subtype if sub_klass is
    // a subtype of super_klass.  Blows registers tmp1, tmp2 and tmp3.
    void gen_subtype_check(Register sub_klass, Register super_klass,
!                          Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
  
    // Load object from cpool->resolved_references(index).
    void load_resolved_reference_at_index(Register result, Register index, Register tmp1, Register tmp2,
                                          Label *L_handle_null = nullptr);
  
--- 83,11 ---
                       address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
  
    // Generate a subtype check: branch to ok_is_subtype if sub_klass is
    // a subtype of super_klass.  Blows registers tmp1, tmp2 and tmp3.
    void gen_subtype_check(Register sub_klass, Register super_klass,
!                          Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype, bool profile = true);
  
    // Load object from cpool->resolved_references(index).
    void load_resolved_reference_at_index(Register result, Register index, Register tmp1, Register tmp2,
                                          Label *L_handle_null = nullptr);
  

*** 253,20 ***
                              Register scratch);
    void update_mdp_by_constant(int constant);
    void update_mdp_for_ret(TosState state, Register return_bci);
  
    void profile_taken_branch(Register scratch, Register bumped_count);
!   void profile_not_taken_branch(Register scratch1, Register scratch2);
    void profile_call(Register scratch1, Register scratch2);
    void profile_final_call(Register scratch1, Register scratch2);
    void profile_virtual_call(Register Rreceiver, Register Rscratch1, Register Rscratch2);
    void profile_typecheck(Register Rklass, Register Rscratch1, Register Rscratch2);
    void profile_ret(TosState state, Register return_bci, Register scratch1, Register scratch2);
    void profile_switch_default(Register scratch1, Register scratch2);
    void profile_switch_case(Register index, Register scratch1,Register scratch2, Register scratch3);
    void profile_null_seen(Register Rscratch1, Register Rscratch2);
  
    // Argument and return type profiling.
    void profile_obj_type(Register obj, Register mdo_addr_base, RegisterOrConstant mdo_addr_offs, Register tmp, Register tmp2);
    void profile_arguments_type(Register callee, Register tmp1, Register tmp2, bool is_virtual);
    void profile_return_type(Register ret, Register tmp1, Register tmp2);
    void profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4);
--- 253,26 ---
                              Register scratch);
    void update_mdp_by_constant(int constant);
    void update_mdp_for_ret(TosState state, Register return_bci);
  
    void profile_taken_branch(Register scratch, Register bumped_count);
!   void profile_not_taken_branch(Register scratch1, Register scratch2, bool acmp = false);
    void profile_call(Register scratch1, Register scratch2);
    void profile_final_call(Register scratch1, Register scratch2);
    void profile_virtual_call(Register Rreceiver, Register Rscratch1, Register Rscratch2);
    void profile_typecheck(Register Rklass, Register Rscratch1, Register Rscratch2);
    void profile_ret(TosState state, Register return_bci, Register scratch1, Register scratch2);
    void profile_switch_default(Register scratch1, Register scratch2);
    void profile_switch_case(Register index, Register scratch1,Register scratch2, Register scratch3);
    void profile_null_seen(Register Rscratch1, Register Rscratch2);
  
+   template <class ArrayData> void profile_array_type(Register array, Register tmp1, Register tmp2);
+ 
+   void profile_multiple_element_types(Register element, Register tmp1, Register tmp2, Register tmp3);
+   void profile_element_type(Register element, Register tmp1, Register tmp2);
+   void profile_acmp(Register left, Register right, Register tmp1, Register tmp2);
+ 
    // Argument and return type profiling.
    void profile_obj_type(Register obj, Register mdo_addr_base, RegisterOrConstant mdo_addr_offs, Register tmp, Register tmp2);
    void profile_arguments_type(Register callee, Register tmp1, Register tmp2, bool is_virtual);
    void profile_return_type(Register ret, Register tmp1, Register tmp2);
    void profile_parameters_type(Register tmp1, Register tmp2, Register tmp3, Register tmp4);

*** 279,8 ***
--- 285,15 ---
  
    // Support for jvmdi/jvmpi.
    void notify_method_entry();
    void notify_method_exit(bool is_native_method, TosState state,
                            NotifyMethodExitMode mode, bool check_exceptions);
+ 
+   // Allocate instance in "obj" and read in the content of the inline field
+   // NOTES:
+   //   - input holder object via "obj", which must be r0,
+   //     will return new instance via the same reg
+   void read_flat_field(Register entry, Register obj);
+   void write_flat_field(Register entry, Register tmp1, Register tmp2, Register obj, Register field_offset, Register value);
  };
  
  #endif // CPU_PPC_INTERP_MASM_PPC_HPP
< prev index next >