152 references to CompilationFlags
System.Linq.Expressions (152)
System\Linq\Expressions\Compiler\LambdaCompiler.Address.cs (11)
15EmitAddress(node, type, CompilationFlags.EmitExpressionStart); 22private void EmitAddress(Expression node, Type type, CompilationFlags flags) 25bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; 26CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; 221EmitExpression(node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitNoExpressionStart); 234CompilationFlags startEmitted = EmitExpressionStart(node); 251EmitAddress(node, type, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitNoExpressionStart);
System\Linq\Expressions\Compiler\LambdaCompiler.Binary.cs (3)
17EmitBinaryExpression(expr, CompilationFlags.EmitAsNoTail); 20private void EmitBinaryExpression(Expression expr, CompilationFlags flags) 93private void EmitBinaryMethod(BinaryExpression b, CompilationFlags flags)
System\Linq\Expressions\Compiler\LambdaCompiler.ControlFlow.cs (11)
51private void EmitLabelExpression(Expression expr, CompilationFlags flags) 85flags = UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitExpressionStart); 93private void EmitGotoExpression(Expression expr, CompilationFlags flags) 98CompilationFlags tailCall = flags & CompilationFlags.EmitAsTailCallMask; 99if (tailCall != CompilationFlags.EmitAsNoTail) 105tailCall = labelInfo.CanReturn ? CompilationFlags.EmitAsTail : CompilationFlags.EmitAsNoTail; 117flags = UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitExpressionStart); 131private void EmitUnreachable(Expression node, CompilationFlags flags) 133if (node.Type != typeof(void) && (flags & CompilationFlags.EmitAsVoidType) == 0)
System\Linq\Expressions\Compiler\LambdaCompiler.Expressions.cs (71)
37private static CompilationFlags UpdateEmitAsTailCallFlag(CompilationFlags flags, CompilationFlags newValue) 39Debug.Assert(newValue == CompilationFlags.EmitAsTail || newValue == CompilationFlags.EmitAsMiddle || newValue == CompilationFlags.EmitAsNoTail); 40CompilationFlags oldValue = flags & CompilationFlags.EmitAsTailCallMask; 47private static CompilationFlags UpdateEmitExpressionStartFlag(CompilationFlags flags, CompilationFlags newValue) 49Debug.Assert(newValue == CompilationFlags.EmitExpressionStart || newValue == CompilationFlags.EmitNoExpressionStart); 50CompilationFlags oldValue = flags & CompilationFlags.EmitExpressionStartMask; 57private static CompilationFlags UpdateEmitAsTypeFlag(CompilationFlags flags, CompilationFlags newValue) 59Debug.Assert(newValue == CompilationFlags.EmitAsDefaultType || newValue == CompilationFlags.EmitAsVoidType); 60CompilationFlags oldValue = flags & CompilationFlags.EmitAsTypeMask; 71EmitExpression(node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitExpressionStart); 80EmitExpressionAsVoid(node, CompilationFlags.EmitAsNoTail); 83private void EmitExpressionAsVoid(Expression node, CompilationFlags flags) 87CompilationFlags startEmitted = EmitExpressionStart(node); 92EmitAssign((AssignBinaryExpression)node, CompilationFlags.EmitAsVoidType); 95Emit((BlockExpression)node, UpdateEmitAsTypeFlag(flags, CompilationFlags.EmitAsVoidType)); 98EmitThrow((UnaryExpression)node, CompilationFlags.EmitAsVoidType); 101EmitGotoExpression(node, UpdateEmitAsTypeFlag(flags, CompilationFlags.EmitAsVoidType)); 111EmitExpression(node, UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitNoExpressionStart)); 115EmitExpression(node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitNoExpressionStart); 123private void EmitExpressionAsType(Expression node, Type type, CompilationFlags flags) 142EmitExpression(node, UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitExpressionStart)); 149private CompilationFlags EmitExpressionStart(Expression node) 153return CompilationFlags.EmitExpressionStart; 155return CompilationFlags.EmitNoExpressionStart; 158private void EmitExpressionEnd(CompilationFlags flags) 160if ((flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart) 170private void EmitInvocationExpression(Expression expr, CompilationFlags flags) 192EmitMethodCall(expr, expr.Type.GetInvokeMethod(), node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitExpressionStart); 195private void EmitInlinedInvoke(InvocationExpression invoke, CompilationFlags flags) 215flags = UpdateEmitAsTailCallFlag(flags, CompilationFlags.EmitAsNoTail); 249private void EmitIndexAssignment(AssignBinaryExpression node, CompilationFlags flags) 255CompilationFlags emitAs = flags & CompilationFlags.EmitAsTypeMask; 277if (emitAs != CompilationFlags.EmitAsVoidType) 286if (emitAs != CompilationFlags.EmitAsVoidType) 353private void EmitMethodCallExpression(Expression expr, CompilationFlags flags) 362EmitMethodCallExpression(expr, CompilationFlags.EmitAsNoTail); 367EmitMethodCall(obj, method, methodCallExpr, CompilationFlags.EmitAsNoTail); 370private void EmitMethodCall(Expression? obj, MethodInfo method, IArgumentProvider methodCallExpr, CompilationFlags flags) 394EmitMethodCall(mi, args, objectType, CompilationFlags.EmitAsNoTail); 398private void EmitMethodCall(MethodInfo mi, IArgumentProvider args, Type? objectType, CompilationFlags flags) 415if ((flags & CompilationFlags.EmitAsTailCallMask) == CompilationFlags.EmitAsTail && !MethodHasByRefParameter(mi)) 701private void EmitVariableAssignment(AssignBinaryExpression node, CompilationFlags flags) 704CompilationFlags emitAs = flags & CompilationFlags.EmitAsTypeMask; 715if (emitAs != CompilationFlags.EmitAsVoidType) 742EmitAssign((AssignBinaryExpression)expr, CompilationFlags.EmitAsDefaultType); 745private void EmitAssign(AssignBinaryExpression node, CompilationFlags emitAs) 785private void EmitMemberAssignment(AssignBinaryExpression node, CompilationFlags flags) 803CompilationFlags emitAs = flags & CompilationFlags.EmitAsTypeMask; 804if (emitAs != CompilationFlags.EmitAsVoidType) 824if (emitAs != CompilationFlags.EmitAsVoidType)
System\Linq\Expressions\Compiler\LambdaCompiler.Generated.cs (7)
13private void EmitExpression(Expression node, CompilationFlags flags) 20_guard.RunOnEmptyStack((LambdaCompiler @this, Expression n, CompilationFlags f) => @this.EmitExpression(n, f), this, node, flags); 26bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; 28CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; 30flags = flags & CompilationFlags.EmitAsTailCallMask;
System\Linq\Expressions\Compiler\LambdaCompiler.Lambda.cs (6)
150impl.EmitLambdaBody(_scope, false, CompilationFlags.EmitAsNoTail); 194CompilationFlags tailCallFlag = _lambda.TailCall ? CompilationFlags.EmitAsTail : CompilationFlags.EmitAsNoTail; 207private void EmitLambdaBody(CompilerScope? parent, bool inlined, CompilationFlags flags) 225flags = UpdateEmitExpressionStartFlag(flags, CompilationFlags.EmitExpressionStart);
System\Linq\Expressions\Compiler\LambdaCompiler.Logical.cs (17)
15private void EmitConditionalExpression(Expression expr, CompilationFlags flags) 26if ((flags & CompilationFlags.EmitAsTailCallMask) == CompilationFlags.EmitAsTail) 276private void EmitMethodAndAlso(BinaryExpression b, CompilationFlags flags) 289if ((flags & CompilationFlags.EmitAsTailCallMask) == CompilationFlags.EmitAsTail) 310private void EmitAndAlsoBinaryExpression(Expression expr, CompilationFlags flags) 382private void EmitMethodOrElse(BinaryExpression b, CompilationFlags flags) 395if ((flags & CompilationFlags.EmitAsTailCallMask) == CompilationFlags.EmitAsTail) 404private void EmitOrElseBinaryExpression(Expression expr, CompilationFlags flags) 459CompilationFlags startEmitted = EmitExpressionStart(node); 481EmitExpression(node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitNoExpressionStart); 498EmitExpression(node, CompilationFlags.EmitAsNoTail | CompilationFlags.EmitNoExpressionStart); 516EmitBinaryMethod(node, CompilationFlags.EmitAsNoTail);
System\Linq\Expressions\Compiler\LambdaCompiler.Statements.cs (19)
18private void EmitBlockExpression(Expression expr, CompilationFlags flags) 21Emit((BlockExpression)expr, UpdateEmitAsTypeFlag(flags, CompilationFlags.EmitAsDefaultType)); 24private void Emit(BlockExpression node, CompilationFlags flags) 35CompilationFlags emitAs = flags & CompilationFlags.EmitAsTypeMask; 37CompilationFlags tailCall = flags & CompilationFlags.EmitAsTailCallMask; 43CompilationFlags tailCallFlag; 44if (tailCall != CompilationFlags.EmitAsNoTail) 51tailCallFlag = CompilationFlags.EmitAsTail; 57tailCallFlag = CompilationFlags.EmitAsMiddle; 62tailCallFlag = CompilationFlags.EmitAsNoTail; 73if (emitAs == CompilationFlags.EmitAsVoidType || node.Type == typeof(void)) 160private void EmitSwitchExpression(Expression expr, CompilationFlags flags) 363private bool TryEmitSwitchInstruction(SwitchExpression node, CompilationFlags flags) 485private void EmitSwitchCases(SwitchExpression node, Label[] labels, bool[] isGoto, Label @default, Label end, CompilationFlags flags) 506if ((flags & CompilationFlags.EmitAsTailCallMask) == CompilationFlags.EmitAsTail) 635private bool TryEmitHashtableSwitch(SwitchExpression node, CompilationFlags flags)
System\Linq\Expressions\Compiler\LambdaCompiler.Unary.cs (7)
41EmitThrow((UnaryExpression)expr, CompilationFlags.EmitAsDefaultType); 44private void EmitThrow(UnaryExpression expr, CompilationFlags flags) 61private void EmitUnaryExpression(Expression expr, CompilationFlags flags) 66private void EmitUnary(UnaryExpression node, CompilationFlags flags) 281private void EmitConvertUnaryExpression(Expression expr, CompilationFlags flags) 286private void EmitConvert(UnaryExpression node, CompilationFlags flags) 350private void EmitUnaryMethod(UnaryExpression node, CompilationFlags flags)