1.1 --- a/src/share/vm/prims/methodHandles.hpp Fri Apr 19 16:51:27 2013 -0700 1.2 +++ b/src/share/vm/prims/methodHandles.hpp Sat Apr 20 04:07:08 2013 -0700 1.3 @@ -54,23 +54,23 @@ 1.4 static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type 1.5 static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing 1.6 static Handle new_MemberName(TRAPS); // must be followed by init_MemberName 1.7 - static oop init_MemberName(oop mname_oop, oop target_oop); // compute vmtarget/vmindex from target 1.8 - static oop init_method_MemberName(oop mname_oop, Method* m, bool do_dispatch, 1.9 - Klass* receiver_limit); 1.10 - static oop init_field_MemberName(oop mname_oop, Klass* field_holder, 1.11 + static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target 1.12 + static oop init_method_MemberName(Handle mname_h, Method* m, bool do_dispatch, 1.13 + KlassHandle receiver_limit_h); 1.14 + static oop init_field_MemberName(Handle mname_h, KlassHandle field_holder_h, 1.15 AccessFlags mods, oop type, oop name, 1.16 intptr_t offset, bool is_setter = false); 1.17 - static Handle init_method_MemberName(oop mname_oop, CallInfo& info, TRAPS); 1.18 - static Handle init_field_MemberName(oop mname_oop, FieldAccessInfo& info, TRAPS); 1.19 + static Handle init_method_MemberName(Handle mname_h, CallInfo& info, TRAPS); 1.20 + static Handle init_field_MemberName(Handle mname_h, FieldAccessInfo& info, TRAPS); 1.21 static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true); 1.22 - static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig, 1.23 - int mflags, Klass* caller, 1.24 - int skip, objArrayOop results); 1.25 + static int find_MemberNames(KlassHandle k, Symbol* name, Symbol* sig, 1.26 + int mflags, KlassHandle caller, 1.27 + int skip, objArrayHandle results); 1.28 // bit values for suppress argument to expand_MemberName: 1.29 enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 }; 1.30 1.31 // Generate MethodHandles adapters. 1.32 - static void generate_adapters(); 1.33 + static void generate_adapters(); 1.34 1.35 // Called from MethodHandlesAdapterGenerator. 1.36 static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid); 1.37 @@ -230,4 +230,27 @@ 1.38 void generate(); 1.39 }; 1.40 1.41 +//------------------------------------------------------------------------------ 1.42 +// MemberNameTable 1.43 +// 1.44 +class MemberNameTable : public GrowableArray<jweak> { 1.45 + public: 1.46 + MemberNameTable(); 1.47 + ~MemberNameTable(); 1.48 + void add_member_name(jweak mem_name_ref); 1.49 + private: 1.50 + int find_member_name(oop mem_name); 1.51 + 1.52 +#if INCLUDE_JVMTI 1.53 + public: 1.54 + // RedefineClasses() API support: 1.55 + // If a MemberName refers to old_method then update it 1.56 + // to refer to new_method. 1.57 + void adjust_method_entries(Method** old_methods, Method** new_methods, 1.58 + int methods_length, bool *trace_name_printed); 1.59 + private: 1.60 + oop find_member_name_by_method(Method* old_method); 1.61 +#endif // INCLUDE_JVMTI 1.62 +}; 1.63 + 1.64 #endif // SHARE_VM_PRIMS_METHODHANDLES_HPP