hotspot/src/share/vm/prims/methodHandles.hpp
changeset 17029 9ff8d7c0ed79
parent 13968 8c9029c01470
child 17828 17131ab4b3b5
equal deleted inserted replaced
17028:8972029d19a0 17029:9ff8d7c0ed79
    52  public:
    52  public:
    53   // working with member names
    53   // working with member names
    54   static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type
    54   static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type
    55   static void expand_MemberName(Handle mname, int suppress, TRAPS);  // expand defc/name/type if missing
    55   static void expand_MemberName(Handle mname, int suppress, TRAPS);  // expand defc/name/type if missing
    56   static Handle new_MemberName(TRAPS);  // must be followed by init_MemberName
    56   static Handle new_MemberName(TRAPS);  // must be followed by init_MemberName
    57   static oop init_MemberName(oop mname_oop, oop target_oop); // compute vmtarget/vmindex from target
    57   static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target
    58   static oop init_method_MemberName(oop mname_oop, Method* m, bool do_dispatch,
    58   static oop init_method_MemberName(Handle mname_h, Method* m, bool do_dispatch,
    59                                     Klass* receiver_limit);
    59                                     KlassHandle receiver_limit_h);
    60   static oop init_field_MemberName(oop mname_oop, Klass* field_holder,
    60   static oop init_field_MemberName(Handle mname_h, KlassHandle field_holder_h,
    61                                    AccessFlags mods, oop type, oop name,
    61                                    AccessFlags mods, oop type, oop name,
    62                                    intptr_t offset, bool is_setter = false);
    62                                    intptr_t offset, bool is_setter = false);
    63   static Handle init_method_MemberName(oop mname_oop, CallInfo& info, TRAPS);
    63   static Handle init_method_MemberName(Handle mname_h, CallInfo& info, TRAPS);
    64   static Handle init_field_MemberName(oop mname_oop, FieldAccessInfo& info, TRAPS);
    64   static Handle init_field_MemberName(Handle mname_h, FieldAccessInfo& info, TRAPS);
    65   static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
    65   static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
    66   static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig,
    66   static int find_MemberNames(KlassHandle k, Symbol* name, Symbol* sig,
    67                               int mflags, Klass* caller,
    67                               int mflags, KlassHandle caller,
    68                               int skip, objArrayOop results);
    68                               int skip, objArrayHandle results);
    69   // bit values for suppress argument to expand_MemberName:
    69   // bit values for suppress argument to expand_MemberName:
    70   enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
    70   enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
    71 
    71 
    72   // Generate MethodHandles adapters.
    72   // Generate MethodHandles adapters.
    73   static void generate_adapters();
    73                               static void generate_adapters();
    74 
    74 
    75   // Called from MethodHandlesAdapterGenerator.
    75   // Called from MethodHandlesAdapterGenerator.
    76   static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid);
    76   static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid);
    77   static void generate_method_handle_dispatch(MacroAssembler* _masm,
    77   static void generate_method_handle_dispatch(MacroAssembler* _masm,
    78                                               vmIntrinsics::ID iid,
    78                                               vmIntrinsics::ID iid,
   228   MethodHandlesAdapterGenerator(CodeBuffer* code) : StubCodeGenerator(code, PrintMethodHandleStubs) {}
   228   MethodHandlesAdapterGenerator(CodeBuffer* code) : StubCodeGenerator(code, PrintMethodHandleStubs) {}
   229 
   229 
   230   void generate();
   230   void generate();
   231 };
   231 };
   232 
   232 
       
   233 //------------------------------------------------------------------------------
       
   234 // MemberNameTable
       
   235 //
       
   236 class MemberNameTable : public GrowableArray<jweak> {
       
   237  public:
       
   238   MemberNameTable();
       
   239   ~MemberNameTable();
       
   240   void add_member_name(jweak mem_name_ref);
       
   241  private:
       
   242   int find_member_name(oop mem_name);
       
   243 
       
   244 #if INCLUDE_JVMTI
       
   245  public:
       
   246   // RedefineClasses() API support:
       
   247   // If a MemberName refers to old_method then update it
       
   248   // to refer to new_method.
       
   249   void adjust_method_entries(Method** old_methods, Method** new_methods,
       
   250                              int methods_length, bool *trace_name_printed);
       
   251  private:
       
   252   oop find_member_name_by_method(Method* old_method);
       
   253 #endif // INCLUDE_JVMTI
       
   254 };
       
   255 
   233 #endif // SHARE_VM_PRIMS_METHODHANDLES_HPP
   256 #endif // SHARE_VM_PRIMS_METHODHANDLES_HPP