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

◆ EmitLiftedBinaryArithmetic()

void System.Linq.Expressions.Compiler.LambdaCompiler.EmitLiftedBinaryArithmetic ( ExpressionType op,
Type leftType,
Type rightType,
Type resultType )
inlineprivate

Definition at line 685 of file LambdaCompiler.cs.

686 {
687 bool flag = leftType.IsNullableType();
688 bool flag2 = rightType.IsNullableType();
696 if (flag)
697 {
699 _ilg.EmitHasValue(leftType);
700 }
701 if (flag2)
702 {
704 _ilg.EmitHasValue(rightType);
705 if (flag)
706 {
708 }
709 }
711 if (flag)
712 {
714 _ilg.EmitGetValueOrDefault(leftType);
715 }
716 else
717 {
719 }
720 if (flag2)
721 {
723 _ilg.EmitGetValueOrDefault(rightType);
724 }
725 else
726 {
728 }
731 Type nonNullableType = resultType.GetNonNullableType();
732 EmitBinaryOperator(op, leftType.GetNonNullableType(), rightType.GetNonNullableType(), nonNullableType, liftedToNull: false);
743 }
static ConstructorInfo GetNullableConstructor(Type nullableType)
Definition TypeUtils.cs:34
void EmitBinaryOperator(ExpressionType op, Type leftType, Type rightType, Type resultType, bool liftedToNull)
virtual void MarkLabel(Label loc)
virtual void Emit(OpCode opcode)
static readonly OpCode Ldloca
Definition OpCodes.cs:427
static readonly OpCode Br_S
Definition OpCodes.cs:89
static readonly OpCode Stloc
Definition OpCodes.cs:429
static readonly OpCode Newobj
Definition OpCodes.cs:233
static readonly OpCode And
Definition OpCodes.cs:193
static readonly OpCode Initobj
Definition OpCodes.cs:441
static readonly OpCode Ldloc
Definition OpCodes.cs:425
static readonly OpCode Brfalse_S
Definition OpCodes.cs:91

References System.Linq.Expressions.Compiler.LambdaCompiler._ilg, System.Reflection.Emit.OpCodes.And, System.Reflection.Emit.OpCodes.Br_S, System.Reflection.Emit.OpCodes.Brfalse_S, System.Reflection.Emit.ILGenerator.DefineLabel(), System.Reflection.Emit.ILGenerator.Emit(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitBinaryOperator(), System.Linq.Expressions.Compiler.LambdaCompiler.FreeLocal(), System.Linq.Expressions.Compiler.LambdaCompiler.GetLocal(), System.Dynamic.Utils.TypeUtils.GetNullableConstructor(), System.Reflection.Emit.OpCodes.Initobj, System.Reflection.Emit.OpCodes.Ldloc, System.Reflection.Emit.OpCodes.Ldloca, System.Reflection.Emit.ILGenerator.MarkLabel(), System.Reflection.Emit.OpCodes.Newobj, and System.Reflection.Emit.OpCodes.Stloc.

Referenced by System.Linq.Expressions.Compiler.LambdaCompiler.EmitLiftedBinaryOp().