comparison src/share/vm/prims/methodHandles.hpp @ 12264:b2e698d2276c

8014013: CallInfo structure no longer accurately reports the result of a LinkResolver operation Summary: Enhance method resolution and resulting data structures, plus some refactoring. Reviewed-by: twisti, acorn, jrose
author drchase
date Fri, 13 Sep 2013 22:38:02 -0400
parents b7fa10a3a69a
children c4b78cbea876
comparison
equal deleted inserted replaced
12261:2c98370f2611 12264:b2e698d2276c
47 static bool _enabled; 47 static bool _enabled;
48 48
49 // Adapters. 49 // Adapters.
50 static MethodHandlesAdapterBlob* _adapter_code; 50 static MethodHandlesAdapterBlob* _adapter_code;
51 51
52 // utility functions for reifying names and types
53 static oop field_name_or_null(Symbol* s);
54 static oop field_signature_type_or_null(Symbol* s);
55
52 public: 56 public:
53 // working with member names 57 // working with member names
54 static Handle resolve_MemberName(Handle mname, TRAPS); // compute vmtarget/vmindex from name/type 58 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 59 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 60 static Handle new_MemberName(TRAPS); // must be followed by init_MemberName
57 static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target 61 static oop init_MemberName(Handle mname_h, Handle target_h); // compute vmtarget/vmindex from target
58 static oop init_method_MemberName(Handle mname_h, Method* m, bool do_dispatch, 62 static oop init_field_MemberName(Handle mname_h, fieldDescriptor& fd, bool is_setter = false);
59 KlassHandle receiver_limit_h); 63 static oop init_method_MemberName(Handle mname_h, CallInfo& info);
60 static oop init_field_MemberName(Handle mname_h, KlassHandle field_holder_h,
61 AccessFlags mods, oop type, oop name,
62 intptr_t offset, bool is_setter = false);
63 static Handle init_method_MemberName(Handle mname_h, CallInfo& 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); 64 static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
66 static int find_MemberNames(KlassHandle k, Symbol* name, Symbol* sig, 65 static int find_MemberNames(KlassHandle k, Symbol* name, Symbol* sig,
67 int mflags, KlassHandle caller, 66 int mflags, KlassHandle caller,
68 int skip, objArrayHandle results); 67 int skip, objArrayHandle results);
69 // bit values for suppress argument to expand_MemberName: 68 // bit values for suppress argument to expand_MemberName: