public LdftnAnnotation(VMFunction function, VMFunctionSignature signature) : base(VMCalls.LDFTN, VMType.Pointer) { Function = function; Signature = signature; Method = null; }
private MethodSignature VMSignatureToMethodSignature(DevirtualisationContext context, VMFunctionSignature signature) { var module = context.TargetModule; var returnType = ((ITypeDescriptor)module.LookupMember(signature.ReturnToken)).ToTypeSignature(); var parameterTypes = signature.ParameterTokens .Select(x => ((ITypeDescriptor)module.LookupMember(x)).ToTypeSignature()); var hasThis = (signature.Flags & context.Constants.FlagInstance) != 0; return(new MethodSignature( hasThis ? CallingConventionAttributes.HasThis : 0, returnType, parameterTypes.Skip(hasThis ? 1 : 0))); }
private MethodSignature VMSignatureToMethodSignature(DevirtualisationContext context, VMFunctionSignature signature) { var returnType = GetTypeSig(context, signature.ReturnToken); var parameterTypes = signature.ParameterTokens.Select(x => GetTypeSig(context, x)); bool hasThis = (signature.Flags & context.Constants.FlagInstance) != 0; return(new MethodSignature(parameterTypes.Skip(hasThis ? 1 : 0), returnType) { HasThis = hasThis }); }