本文整理汇总了C#中IMethod.WriteFunctionNameExpression方法的典型用法代码示例。如果您正苦于以下问题:C# IMethod.WriteFunctionNameExpression方法的具体用法?C# IMethod.WriteFunctionNameExpression怎么用?C# IMethod.WriteFunctionNameExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMethod
的用法示例。
在下文中一共展示了IMethod.WriteFunctionNameExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteCall
//.........这里部分代码省略.........
var writer = llvmWriter.Output;
IType thisType;
bool hasThisArgument;
OpCodePart opCodeFirstOperand;
BaseWriter.ReturnResult resultOfFirstOperand;
bool isIndirectMethodCall;
IType ownerOfExplicitInterface;
IType requiredType;
methodInfo.WriteFunctionCallProlog(
opCodeMethodInfo,
isVirtual,
hasThis,
llvmWriter,
out thisType,
out hasThisArgument,
out opCodeFirstOperand,
out resultOfFirstOperand,
out isIndirectMethodCall,
out ownerOfExplicitInterface,
out requiredType);
llvmWriter.CheckIfMethodExternalDeclarationIsRequired(methodInfo, ownerOfExplicitInterface);
llvmWriter.CheckIfExternalDeclarationIsRequired(methodInfo.DeclaringType);
if (hasThisArgument)
{
opCodeMethodInfo.WriteFunctionCallPrepareThisExpression(
thisType,
opCodeFirstOperand,
resultOfFirstOperand,
llvmWriter);
}
FullyDefinedReference methodAddressResultNumber = null;
if (isIndirectMethodCall)
{
methodAddressResultNumber = llvmWriter.GenerateVirtualCall(
opCodeMethodInfo,
methodInfo,
thisType,
opCodeFirstOperand,
resultOfFirstOperand,
ref requiredType);
}
methodInfo.WriteFunctionCallLoadFunctionAddress(
opCodeMethodInfo,
thisType,
ref methodAddressResultNumber,
llvmWriter);
methodInfo.PreProcessCallParameters(opCodeMethodInfo, llvmWriter);
if (llvmWriter.ProcessPluggableMethodCall(opCodeMethodInfo, methodInfo))
{
return;
}
var returnFullyDefinedReference = methodInfo.WriteFunctionCallResult(opCodeMethodInfo, llvmWriter);
writer.WriteFunctionCall(tryClause);
methodInfo.WriteFunctionCallAttributes(writer);
if (methodInfo.CallingConvention.HasFlag(CallingConventions.VarArgs))
{
llvmWriter.WriteMethodPointerType(writer, methodInfo);
writer.Write(" ");
}
else
{
methodInfo.WriteFunctionCallReturnType(llvmWriter);
writer.Write(' ');
// extra support
if (methodInfo.IsExternalLibraryMethod())
{
writer.Write("(...)* ");
}
}
methodInfo.WriteFunctionNameExpression(methodAddressResultNumber, ownerOfExplicitInterface, llvmWriter);
methodInfo.GetParameters()
.WriteFunctionCallArguments(
opCodeMethodInfo.OpCodeOperands,
isVirtual,
hasThis,
isCtor,
thisResultNumber,
thisType,
returnFullyDefinedReference,
methodInfo != null ? methodInfo.ReturnType : null,
llvmWriter,
methodInfo.CallingConvention.HasFlag(CallingConventions.VarArgs));
tryClause.WriteFunctionCallUnwind(opCodeMethodInfo, llvmWriter);
}