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

◆ EmitCalli() [1/4]

override void System.Reflection.Emit.DynamicILGenerator.EmitCalli ( OpCode opcode,
CallingConvention unmanagedCallConv,
Type returnType,
Type[] parameterTypes )
inline

Definition at line 182 of file DynamicILGenerator.cs.

183 {
184 int num = 0;
185 int num2 = 0;
186 if (parameterTypes != null)
187 {
188 num2 = parameterTypes.Length;
189 }
190 SignatureHelper methodSigHelper = SignatureHelper.GetMethodSigHelper(unmanagedCallConv, returnType);
191 if (parameterTypes != null)
192 {
193 for (int i = 0; i < num2; i++)
194 {
195 methodSigHelper.AddArgument(parameterTypes[i]);
196 }
197 }
198 if (returnType != typeof(void))
199 {
200 num++;
201 }
202 if (parameterTypes != null)
203 {
204 num -= num2;
205 }
206 num--;
207 UpdateStackSize(OpCodes.Calli, num);
209 Emit(OpCodes.Calli);
210 int tokenForSig = GetTokenForSig(methodSigHelper.GetSignature(appendEndOfSig: true));
211 PutInteger4(tokenForSig);
212 }
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.SignatureHelper.GetSignature(), System.Reflection.Emit.DynamicILGenerator.GetTokenForSig(), System.Reflection.Emit.ILGenerator.PutInteger4(), and System.Reflection.Emit.ILGenerator.UpdateStackSize().