25using IKVM.ByteCode.Decoding;
30 sealed partial class ClassFile
36 internal sealed class ConstantPoolItemMethodref : ConstantPoolItemMI
44 public ConstantPoolItemMethodref(RuntimeContext context, MethodrefConstantData data) :
45 base(context, data.
Class, data.NameAndType)
51 public override void Link(RuntimeJavaType thisJavaType,
LoadMode mode)
53 base.Link(thisJavaType, mode);
55 var javaType = GetClassType();
56 if (javaType !=
null && javaType.IsUnloadable ==
false)
58 method = javaType.GetMethod(
Name, Signature, !ReferenceEquals(
Name, StringConstants.INIT));
61 if (
Name != StringConstants.INIT &&
62 thisJavaType.IsInterface ==
false &&
63 (JVM.AllowNonVirtualCalls ==
false || (thisJavaType.Modifiers &
Modifiers.Super) ==
Modifiers.Super) &&
64 thisJavaType != javaType &&
65 thisJavaType.IsSubTypeOf(javaType))
67 invokespecialMethod = thisJavaType.BaseTypeWrapper.GetMethod(
Name, Signature,
true);
68 invokespecialMethod?.Link(mode);
global::java.lang.Class Class
global::java.lang.invoke.LambdaForm.Name Name