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

◆ EmitDefault()

static void System.Linq.Expressions.Compiler.ILGen.EmitDefault ( this ILGenerator il,
Type type,
ILocalCache locals )
inlinestaticpackage

Definition at line 844 of file ILGen.cs.

845 {
846 switch (type.GetTypeCode())
847 {
848 case TypeCode.DateTime:
849 il.Emit(OpCodes.Ldsfld, CachedReflectionInfo.DateTime_MinValue);
850 break;
851 case TypeCode.Object:
852 if (type.IsValueType)
853 {
854 LocalBuilder local = locals.GetLocal(type);
855 il.Emit(OpCodes.Ldloca, local);
856 il.Emit(OpCodes.Initobj, type);
857 il.Emit(OpCodes.Ldloc, local);
858 locals.FreeLocal(local);
859 break;
860 }
861 goto case TypeCode.Empty;
862 case TypeCode.Empty:
863 case TypeCode.DBNull:
864 case TypeCode.String:
865 il.Emit(OpCodes.Ldnull);
866 break;
867 case TypeCode.Boolean:
868 case TypeCode.Char:
869 case TypeCode.SByte:
870 case TypeCode.Byte:
871 case TypeCode.Int16:
872 case TypeCode.UInt16:
873 case TypeCode.Int32:
874 case TypeCode.UInt32:
875 il.Emit(OpCodes.Ldc_I4_0);
876 break;
877 case TypeCode.Int64:
878 case TypeCode.UInt64:
879 il.Emit(OpCodes.Ldc_I4_0);
880 il.Emit(OpCodes.Conv_I8);
881 break;
882 case TypeCode.Single:
883 il.Emit(OpCodes.Ldc_R4, 0f);
884 break;
885 case TypeCode.Double:
886 il.Emit(OpCodes.Ldc_R8, 0.0);
887 break;
888 case TypeCode.Decimal:
889 il.Emit(OpCodes.Ldsfld, CachedReflectionInfo.Decimal_Zero);
890 break;
891 default:
893 }
894 }
static readonly OpCode Ldloca
Definition OpCodes.cs:427
static readonly OpCode Initobj
Definition OpCodes.cs:441
static readonly OpCode Ldc_I4_0
Definition OpCodes.cs:49
static readonly OpCode Ldsfld
Definition OpCodes.cs:251
static readonly OpCode Ldloc
Definition OpCodes.cs:425
static readonly OpCode Ldnull
Definition OpCodes.cs:45
static readonly OpCode Ldc_R4
Definition OpCodes.cs:73
static readonly OpCode Ldc_R8
Definition OpCodes.cs:75
static readonly OpCode Conv_I8
Definition OpCodes.cs:215

References System.Reflection.Emit.OpCodes.Conv_I8, System.Linq.Expressions.CachedReflectionInfo.DateTime_MinValue, System.Linq.Expressions.CachedReflectionInfo.Decimal_Zero, System.Reflection.Emit.ILGenerator.Emit(), System.Linq.Expressions.Compiler.ILocalCache.FreeLocal(), System.Linq.Expressions.Compiler.ILocalCache.GetLocal(), System.Reflection.Emit.OpCodes.Initobj, System.Reflection.Emit.OpCodes.Ldc_I4_0, System.Reflection.Emit.OpCodes.Ldc_R4, System.Reflection.Emit.OpCodes.Ldc_R8, System.Reflection.Emit.OpCodes.Ldloc, System.Reflection.Emit.OpCodes.Ldloca, System.Reflection.Emit.OpCodes.Ldnull, System.Reflection.Emit.OpCodes.Ldsfld, System.type, and System.Dynamic.Utils.ContractUtils.Unreachable.