Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EmitCalli() [1/2]

virtual void System.Reflection.Emit.ILGenerator.EmitCalli ( OpCode opcode,
CallingConvention unmanagedCallConv,
Type? returnType,
Type?[] parameterTypes )
inlinevirtual

Definition at line 471 of file ILGenerator.cs.

472 {
473 int num = 0;
474 int num2 = 0;
475 ModuleBuilder moduleBuilder = (ModuleBuilder)m_methodBuilder.Module;
476 if (parameterTypes != null)
477 {
478 num2 = parameterTypes.Length;
479 }
480 SignatureHelper methodSigHelper = SignatureHelper.GetMethodSigHelper(moduleBuilder, unmanagedCallConv, returnType);
481 if (parameterTypes != null)
482 {
483 for (int i = 0; i < num2; i++)
484 {
485 methodSigHelper.AddArgument(parameterTypes[i]);
486 }
487 }
488 if (returnType != typeof(void))
489 {
490 num++;
491 }
492 if (parameterTypes != null)
493 {
494 num -= num2;
495 }
496 num--;
497 UpdateStackSize(OpCodes.Calli, num);
499 Emit(OpCodes.Calli);
501 PutInteger4(moduleBuilder.GetSignatureToken(methodSigHelper));
502 }
void UpdateStackSize(OpCode opcode, int stackchange)

References System.Reflection.Emit.SignatureHelper.AddArgument(), System.Reflection.Emit.OpCodes.Calli, System.Reflection.Emit.ILGenerator.EnsureCapacity(), System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(), System.Reflection.Emit.ModuleBuilder.GetSignatureToken(), System.Reflection.Emit.ILGenerator.m_methodBuilder, System.Reflection.MemberInfo.Module, System.Reflection.Emit.ILGenerator.PutInteger4(), System.Reflection.Emit.ILGenerator.RecordTokenFixup(), and System.Reflection.Emit.ILGenerator.UpdateStackSize().