本文整理汇总了C#中IType.WriteCallNewObjectMethod方法的典型用法代码示例。如果您正苦于以下问题:C# IType.WriteCallNewObjectMethod方法的具体用法?C# IType.WriteCallNewObjectMethod怎么用?C# IType.WriteCallNewObjectMethod使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IType
的用法示例。
在下文中一共展示了IType.WriteCallNewObjectMethod方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteNew
/// <summary>
/// </summary>
/// <param name="llvmWriter">
/// </param>
/// <param name="opCodeConstructorInfoPart">
/// </param>
/// <param name="declaringType">
/// </param>
public static void WriteNew(this LlvmWriter llvmWriter, OpCodeConstructorInfoPart opCodeConstructorInfoPart, IType declaringType)
{
declaringType.WriteCallNewObjectMethod(llvmWriter, opCodeConstructorInfoPart);
llvmWriter.WriteCallConstructor(opCodeConstructorInfoPart);
}
示例2: WriteBoxObject
/// <summary>
/// </summary>
/// <param name="llvmWriter">
/// </param>
/// <param name="opCode">
/// </param>
/// <param name="declaringType">
/// </param>
/// <param name="newObjectResult">
/// </param>
/// <param name="callInit">
/// </param>
public static void WriteBoxObject(
this LlvmWriter llvmWriter, OpCodePart opCode, IType declaringType, FullyDefinedReference newObjectResult = null, bool callInit = false)
{
var writer = llvmWriter.Output;
var valueLoadResult = opCode.Result;
var isStruct = declaringType.ToNormal().IsStructureType();
opCode.Result = null;
writer.WriteLine("; Boxing");
writer.WriteLine(string.Empty);
llvmWriter.CheckIfExternalDeclarationIsRequired(declaringType);
// call new if null
if (newObjectResult == null)
{
declaringType.WriteCallNewObjectMethod(llvmWriter, opCode);
newObjectResult = opCode.Result;
}
else
{
opCode.Result = newObjectResult;
}
writer.WriteLine(string.Empty);
writer.WriteLine("; Copy data");
if (!isStruct)
{
// write access to a field
if (!llvmWriter.WriteFieldAccess(
writer,
opCode,
declaringType.ToClass(),
declaringType.ToClass(),
0,
opCode.Result))
{
writer.WriteLine("; No data");
return;
}
writer.WriteLine(string.Empty);
}
var fieldType = declaringType.ToNormal();
opCode.OpCodeOperands = new[] { new OpCodePart(OpCodesEmit.Ldarg_0, 0, 0) };
opCode.OpCodeOperands[0].Result = valueLoadResult;
if (valueLoadResult == null)
{
llvmWriter.ActualWrite(writer, opCode.OpCodeOperands[0]);
}
llvmWriter.SaveToField(opCode, fieldType, 0);
writer.WriteLine(string.Empty);
writer.WriteLine("; End of Copy data");
if (callInit)
{
opCode.Result = newObjectResult;
declaringType.WriteCallInitObjectMethod(llvmWriter, opCode);
writer.WriteLine(string.Empty);
}
opCode.Result = newObjectResult.ToClassType();
}