Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
System.Linq.Expressions.Compiler.LambdaCompiler Class Referencesealed

Classes

class  SwitchInfo
 
class  SwitchLabel
 

Public Member Functions

LocalBuilder GetLocal (Type type)
 
void FreeLocal (LocalBuilder local)
 

Package Types

enum  CompilationFlags {
  EmitExpressionStart = 1 , EmitNoExpressionStart = 2 , EmitAsDefaultType = 0x10 , EmitAsVoidType = 0x20 ,
  EmitAsTail = 0x100 , EmitAsMiddle = 0x200 , EmitAsNoTail = 0x400 , EmitExpressionStartMask = 0xF ,
  EmitAsTypeMask = 0xF0 , EmitAsTailCallMask = 0xF00
}
 

Package Functions

int GetLambdaArgument (int index)
 
void EmitLambdaArgument (int index)
 
void EmitClosureArgument ()
 
void EmitExpression (Expression node)
 
void EmitConstantArray< T > (T[] array)
 

Static Package Functions

static Delegate Compile (LambdaExpression lambda)
 

Properties

ILGenerator IL [get]
 
IParameterProvider Parameters [get]
 

Private Member Functions

delegate void WriteBack (LambdaCompiler compiler)
 
void EmitAddress (Expression node, Type type)
 
void EmitAddress (Expression node, Type type, CompilationFlags flags)
 
void AddressOf (BinaryExpression node, Type type)
 
void AddressOf (ParameterExpression node, Type type)
 
void AddressOf (MemberExpression node, Type type)
 
void EmitMemberAddress (MemberInfo member, Type objectType)
 
void AddressOf (MethodCallExpression node, Type type)
 
void AddressOf (IndexExpression node, Type type)
 
void AddressOf (UnaryExpression node, Type type)
 
void EmitExpressionAddress (Expression node, Type type)
 
WriteBack EmitAddressWriteBack (Expression node, Type type)
 
WriteBack AddressOfWriteBack (MemberExpression node)
 
WriteBack AddressOfWriteBackCore (MemberExpression node)
 
WriteBack AddressOfWriteBack (IndexExpression node)
 
WriteBack AddressOfWriteBackCore (IndexExpression node)
 
LocalBuilder GetInstanceLocal (Type type)
 
void EmitBinaryExpression (Expression expr)
 
void EmitBinaryExpression (Expression expr, CompilationFlags flags)
 
void EmitNullEquality (ExpressionType op, Expression e, bool isLiftedToNull)
 
void EmitBinaryMethod (BinaryExpression b, CompilationFlags flags)
 
void EmitBinaryOperator (ExpressionType op, Type leftType, Type rightType, Type resultType, bool liftedToNull)
 
void EmitUnliftedBinaryOp (ExpressionType op, Type leftType, Type rightType)
 
void EmitShiftMask (Type leftType)
 
void EmitConvertArithmeticResult (ExpressionType op, Type resultType)
 
void EmitLiftedBinaryOp (ExpressionType op, Type leftType, Type rightType, Type resultType, bool liftedToNull)
 
void EmitLiftedRelational (ExpressionType op, Type type)
 
void EmitLiftedToNullRelational (ExpressionType op, Type type)
 
void EmitLiftedBinaryArithmetic (ExpressionType op, Type leftType, Type rightType, Type resultType)
 
void EmitLiftedBooleanAnd ()
 
void EmitLiftedBooleanOr ()
 
LabelInfo EnsureLabel (LabelTarget node)
 
LabelInfo ReferenceLabel (LabelTarget node)
 
LabelInfo DefineLabel (LabelTarget node)
 
void PushLabelBlock (LabelScopeKind type)
 
void PopLabelBlock (LabelScopeKind kind)
 
void EmitLabelExpression (Expression expr, CompilationFlags flags)
 
void EmitGotoExpression (Expression expr, CompilationFlags flags)
 
void EmitUnreachable (Expression node, CompilationFlags flags)
 
bool TryPushLabelBlock (Expression node)
 
void DefineBlockLabels (Expression node)
 
void AddReturnLabel (LambdaExpression lambda)
 
 LambdaCompiler (AnalyzedTree tree, LambdaExpression lambda)
 
 LambdaCompiler (LambdaCompiler parent, LambdaExpression lambda, InvocationExpression invocation)
 
void InitializeMethod ()
 
Delegate CreateDelegate ()
 
MemberExpression CreateLazyInitializedField< T > (string name)
 
void EmitExpressionAsVoid (Expression node)
 
void EmitExpressionAsVoid (Expression node, CompilationFlags flags)
 
void EmitExpressionAsType (Expression node, Type type, CompilationFlags flags)
 
CompilationFlags EmitExpressionStart (Expression node)
 
void EmitExpressionEnd (CompilationFlags flags)
 
void EmitInvocationExpression (Expression expr, CompilationFlags flags)
 
void EmitInlinedInvoke (InvocationExpression invoke, CompilationFlags flags)
 
void EmitIndexExpression (Expression expr)
 
void EmitIndexAssignment (AssignBinaryExpression node, CompilationFlags flags)
 
void EmitGetIndexCall (IndexExpression node, Type objectType)
 
void EmitGetArrayElement (Type arrayType)
 
void EmitSetIndexCall (IndexExpression node, Type objectType)
 
void EmitSetArrayElement (Type arrayType)
 
void EmitMethodCallExpression (Expression expr, CompilationFlags flags)
 
void EmitMethodCallExpression (Expression expr)
 
void EmitMethodCall (Expression obj, MethodInfo method, IArgumentProvider methodCallExpr)
 
void EmitMethodCall (Expression obj, MethodInfo method, IArgumentProvider methodCallExpr, CompilationFlags flags)
 
void EmitMethodCall (MethodInfo mi, IArgumentProvider args, Type objectType)
 
void EmitMethodCall (MethodInfo mi, IArgumentProvider args, Type objectType, CompilationFlags flags)
 
void EmitCall (Type objectType, MethodInfo method)
 
List< WriteBackEmitArguments (MethodBase method, IArgumentProvider args)
 
List< WriteBackEmitArguments (MethodBase method, IArgumentProvider args, int skipParameters)
 
void EmitWriteBack (List< WriteBack > writeBacks)
 
void EmitConstantExpression (Expression expr)
 
void EmitConstant (object value)
 
void EmitConstant (object value, Type type)
 
void EmitDynamicExpression (Expression expr)
 
void EmitNewExpression (Expression expr)
 
void EmitTypeBinaryExpression (Expression expr)
 
void EmitVariableAssignment (AssignBinaryExpression node, CompilationFlags flags)
 
void EmitAssignBinaryExpression (Expression expr)
 
void EmitAssign (AssignBinaryExpression node, CompilationFlags emitAs)
 
void EmitParameterExpression (Expression expr)
 
void EmitLambdaExpression (Expression expr)
 
void EmitRuntimeVariablesExpression (Expression expr)
 
void EmitMemberAssignment (AssignBinaryExpression node, CompilationFlags flags)
 
void EmitMemberExpression (Expression expr)
 
void EmitMemberGet (MemberInfo member, Type objectType)
 
void EmitInstance (Expression instance, out Type type)
 
void EmitNewArrayExpression (Expression expr)
 
void EmitDebugInfoExpression (Expression expr)
 
void EmitListInitExpression (Expression expr)
 
void EmitMemberInitExpression (Expression expr)
 
void EmitBinding (MemberBinding binding, Type objectType)
 
void EmitMemberAssignment (MemberAssignment binding, Type objectType)
 
void EmitMemberMemberBinding (MemberMemberBinding binding)
 
void EmitMemberListBinding (MemberListBinding binding)
 
void EmitMemberInit (MemberInitExpression init)
 
void EmitMemberInit (ReadOnlyCollection< MemberBinding > bindings, bool keepOnStack, Type objectType)
 
void EmitListInit (ListInitExpression init)
 
void EmitListInit (ReadOnlyCollection< ElementInit > initializers, bool keepOnStack, Type objectType)
 
void EmitLift (ExpressionType nodeType, Type resultType, MethodCallExpression mc, ParameterExpression[] paramList, Expression[] argList)
 
void EmitExpression (Expression node, CompilationFlags flags)
 
void EmitClosureCreation (LambdaCompiler inner)
 
void EmitDelegateConstruction (LambdaCompiler inner)
 
void EmitDelegateConstruction (LambdaExpression lambda)
 
void EmitLambdaBody ()
 
void EmitLambdaBody (CompilerScope parent, bool inlined, CompilationFlags flags)
 
void EmitConditionalExpression (Expression expr, CompilationFlags flags)
 
void EmitCoalesceBinaryExpression (Expression expr)
 
void EmitNullableCoalesce (BinaryExpression b)
 
void EmitLambdaReferenceCoalesce (BinaryExpression b)
 
void EmitReferenceCoalesceWithoutConversion (BinaryExpression b)
 
void EmitLiftedAndAlso (BinaryExpression b)
 
void EmitMethodAndAlso (BinaryExpression b, CompilationFlags flags)
 
void EmitUnliftedAndAlso (BinaryExpression b)
 
void EmitAndAlsoBinaryExpression (Expression expr, CompilationFlags flags)
 
void EmitLiftedOrElse (BinaryExpression b)
 
void EmitUnliftedOrElse (BinaryExpression b)
 
void EmitMethodOrElse (BinaryExpression b, CompilationFlags flags)
 
void EmitOrElseBinaryExpression (Expression expr, CompilationFlags flags)
 
void EmitExpressionAndBranch (bool branchValue, Expression node, Label label)
 
void EmitBranchOp (bool branch, Label label)
 
void EmitBranchNot (bool branch, UnaryExpression node, Label label)
 
void EmitBranchComparison (bool branch, BinaryExpression node, Label label)
 
void EmitBranchLogical (bool branch, BinaryExpression node, Label label)
 
void EmitBranchAnd (bool branch, BinaryExpression node, Label label)
 
void EmitBranchOr (bool branch, BinaryExpression node, Label label)
 
void EmitBranchBlock (bool branch, BlockExpression node, Label label)
 
void EmitBlockExpression (Expression expr, CompilationFlags flags)
 
void Emit (BlockExpression node, CompilationFlags flags)
 
void EnterScope (object node)
 
void ExitScope (object node)
 
void EmitDefaultExpression (Expression expr)
 
void EmitLoopExpression (Expression expr)
 
void EmitSwitchExpression (Expression expr, CompilationFlags flags)
 
bool TryEmitSwitchInstruction (SwitchExpression node, CompilationFlags flags)
 
void DefineSwitchCaseLabel (SwitchCase @case, out Label label, out bool isGoto)
 
void EmitSwitchCases (SwitchExpression node, Label[] labels, bool[] isGoto, Label @default, Label end, CompilationFlags flags)
 
void EmitSwitchBuckets (SwitchInfo info, List< List< SwitchLabel > > buckets, int first, int last)
 
void EmitSwitchBucket (SwitchInfo info, List< SwitchLabel > bucket)
 
bool TryEmitHashtableSwitch (SwitchExpression node, CompilationFlags flags)
 
void CheckRethrow ()
 
void CheckTry ()
 
void EmitSaveExceptionOrPop (CatchBlock cb)
 
void EmitTryExpression (Expression expr)
 
void EmitCatchStart (CatchBlock cb)
 
void EmitQuoteUnaryExpression (Expression expr)
 
void EmitQuote (UnaryExpression quote)
 
void EmitThrowUnaryExpression (Expression expr)
 
void EmitThrow (UnaryExpression expr, CompilationFlags flags)
 
void EmitUnaryExpression (Expression expr, CompilationFlags flags)
 
void EmitUnary (UnaryExpression node, CompilationFlags flags)
 
void EmitUnaryOperator (ExpressionType op, Type operandType, Type resultType)
 
void EmitConstantOne (Type type)
 
void EmitUnboxUnaryExpression (Expression expr)
 
void EmitConvertUnaryExpression (Expression expr, CompilationFlags flags)
 
void EmitConvert (UnaryExpression node, CompilationFlags flags)
 
void EmitUnaryMethod (UnaryExpression node, CompilationFlags flags)
 

Static Private Member Functions

static AnalyzedTree AnalyzeLambda (ref LambdaExpression lambda)
 
static CompilationFlags UpdateEmitAsTailCallFlag (CompilationFlags flags, CompilationFlags newValue)
 
static CompilationFlags UpdateEmitExpressionStartFlag (CompilationFlags flags, CompilationFlags newValue)
 
static CompilationFlags UpdateEmitAsTypeFlag (CompilationFlags flags, CompilationFlags newValue)
 
static bool MethodHasByRefParameter (MethodInfo mi)
 
static bool UseVirtual (MethodInfo mi)
 
static FieldInfo GetCallSiteTargetField (Type siteType)
 
static Type GetMemberType (MemberInfo member)
 
static bool IsChecked (ExpressionType op)
 
static Type[] GetParameterTypes (LambdaExpression lambda, Type firstType)
 
static bool NotEmpty (Expression node)
 
static bool Significant (Expression node)
 
static Expression GetEqualityOperand (Expression expression)
 
static bool HasVariables (object node)
 
static Type GetTestValueType (SwitchExpression node)
 
static bool FitsInBucket (List< SwitchLabel > buckets, decimal key, int count)
 
static void MergeBuckets (List< List< SwitchLabel > > buckets)
 
static void AddToBuckets (List< List< SwitchLabel > > buckets, SwitchLabel key)
 
static bool CanOptimizeSwitchType (Type valueType)
 
static decimal ConvertSwitchValue (object value)
 
static MethodCallExpression CallTryGetValue (Expression dictInit, ParameterExpression switchValue, ParameterExpression switchIndex)
 

Private Attributes

readonly AnalyzedTree _tree
 
readonly ILGenerator _ilg
 
readonly MethodInfo _method
 
LabelScopeInfo _labelBlock = new LabelScopeInfo(null, LabelScopeKind.Lambda)
 
readonly Dictionary< LabelTarget, LabelInfo_labelInfo = new Dictionary<LabelTarget, LabelInfo>()
 
CompilerScope _scope
 
readonly LambdaExpression _lambda
 
readonly bool _hasClosureArgument
 
readonly BoundConstants _boundConstants
 
readonly KeyedStack< Type, LocalBuilder_freeLocals = new KeyedStack<Type, LocalBuilder>()
 
readonly StackGuard _guard = new StackGuard()
 

Static Private Attributes

static int s_lambdaMethodIndex
 
static readonly FieldInfo s_callSiteTargetField = typeof(CallSite<>).GetField("Target")
 

Detailed Description

Definition at line 13 of file LambdaCompiler.cs.


The documentation for this class was generated from the following file: