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

◆ Emit() [12/17]

virtual void System.Reflection.Emit.ILGenerator.Emit ( OpCode opcode,
MethodInfo meth )
inlinevirtual

Reimplemented in System.Reflection.Emit.DynamicILGenerator.

Definition at line 418 of file ILGenerator.cs.

419 {
420 if (meth == null)
421 {
422 throw new ArgumentNullException("meth");
423 }
424 if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj))
425 {
426 EmitCall(opcode, meth, null);
427 return;
428 }
429 bool useMethodDef = opcode.Equals(OpCodes.Ldtoken) || opcode.Equals(OpCodes.Ldftn) || opcode.Equals(OpCodes.Ldvirtftn);
430 int methodToken = GetMethodToken(meth, null, useMethodDef);
432 InternalEmit(opcode);
433 UpdateStackSize(opcode, 0);
435 PutInteger4(methodToken);
436 }
void UpdateStackSize(OpCode opcode, int stackchange)
virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes)
void InternalEmit(OpCode opcode)
int GetMethodToken(MethodBase method, Type[] optionalParameterTypes, bool useMethodDef)

References System.Reflection.Emit.OpCodes.Call, System.Reflection.Emit.OpCodes.Callvirt, System.Reflection.Emit.ILGenerator.EmitCall(), System.Reflection.Emit.ILGenerator.EnsureCapacity(), System.Reflection.Emit.OpCode.Equals(), System.Reflection.Emit.ILGenerator.GetMethodToken(), System.Reflection.Emit.ILGenerator.InternalEmit(), System.Reflection.Emit.OpCodes.Ldftn, System.Reflection.Emit.OpCodes.Ldtoken, System.Reflection.Emit.OpCodes.Ldvirtftn, System.Reflection.Emit.OpCodes.Newobj, System.Reflection.Emit.ILGenerator.PutInteger4(), System.Reflection.Emit.ILGenerator.RecordTokenFixup(), and System.Reflection.Emit.ILGenerator.UpdateStackSize().