36 if (
node.Variable !=
null)
42 if (
node.Variable !=
null)
133 node.ValidateArgumentCount();
176 if (
type.IsNullableOrReferenceType())
252 if (
type.IsValueType && !
type.IsEnum)
254 return !
type.IsPrimitive;
345 for (
int i = 0; i < node.Expressions.Count - 1; i++)
377 if (
index.Indexer !=
null)
381 else if (
index.ArgumentCount != 1)
688 switch (
node.NodeType)
782 if (
type.IsNullableType() &&
type2.Equals(
type.GetNonNullableType()))
841 if ((
object)
type3 !=
null)
861 if ((
object)
type3 !=
null)
984 if (
b.Method !=
null && !
b.IsLiftedLogical)
988 else if (
b.Left.Type ==
typeof(
bool?))
992 else if (
b.IsLiftedLogical)
994 Compile(
b.ReduceUserdefinedLifted());
1203 bool flag = node.Type !=
typeof(
void);
1208 if (
node.DefaultBody !=
null)
1213 for (
int i = 0; i <
node.Cases.
Count; i++)
1234 bool flag = node.Type !=
typeof(
void);
1240 if (
node.DefaultBody !=
null)
1245 for (
int i = 0; i <
node.Cases.
Count; i++)
1256 strongBox.Value =
value;
1353 switch (
node.NodeType)
1497 bool flag = tryExpression.Type !=
typeof(
void);
1511 if (handler.
Filter !=
null)
1568 bool flag = expr.Type !=
typeof(
void);
1623 if (!
method.IsStatic && @
object.Type.IsNullableType())
1661 if (
node.Type.IsValueType)
1663 switch (
node.NodeType)
1682 switch (
node.NodeType)
1833 if (
type.IsNullableType())
1884 if (propertyInfo !=
null)
1919 else if (
count == 1)
1939 IsClear = debugInfoExpression.IsClear
1974 bool flag = binaryExpression.Conversion !=
null;
2120 if (propertyInfo !=
null)
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
bool ContainsKey(TKey key)
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
static Exception Unreachable
static MethodInfo GetArrayGetMethod(Type arrayType)
static bool AreEquivalent(Type t1, Type t2)
static MethodInfo GetBooleanOperator(Type type, string name)
static MethodInfo GetArraySetMethod(Type arrayType)
static Type GetUnderlyingType(Type enumType)
static MethodInfo String_op_Equality_String_String
static AnalyzeTypeIsResult AnalyzeTypeIs(TypeBinaryExpression typeIs)
static Exception NonAbstractConstructorRequired()
static Exception NotSupported()
static Exception InvalidProgram()
static Exception RethrowRequiresCatch()
static Exception InvalidLvalue(ExpressionType p0)
static Exception CannotAutoInitializeValueTypeMemberThroughProperty(object p0)
virtual ? Expression Visit(Expression? node)
Expression ReduceAndCheck()
static MethodCallExpression Call(MethodInfo method)
static ParameterExpression Parameter(Type type)
virtual ExpressionType NodeType
static LabelExpression Label(LabelTarget target)
static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse)
static BinaryExpression Equal(Expression left, Expression right)
static GotoExpression Goto(LabelTarget target)
void EmitGreaterThanOrEqual(Type type, bool liftedToNull)
void EmitStoreLocalToClosure(int index)
void EmitAssignLocalBoxed(int index)
void EmitDefaultValue(Type type)
void MarkLabel(BranchLabel label)
void EmitAssignLocal(int index)
void EmitTypeIs(Type type)
void EmitCall(MethodInfo method)
EnterTryFaultInstruction EmitEnterTryFault(BranchLabel tryEnd)
void EmitNewArrayBounds(Type elementType, int rank)
void EmitEnterExceptionHandlerNonVoid()
void EmitDecrement(Type type)
void EmitAdd(Type type, bool @checked)
void EmitLeaveExceptionFilter()
void EmitStoreLocalBoxed(int index)
void EmitNew(ConstructorInfo constructorInfo, ParameterInfo[] parameters)
void EmitCastReferenceToEnum(Type toType)
void EmitEnterExceptionHandlerVoid()
void EmitEnterTryFinally(BranchLabel finallyStartLabel)
void EmitBranchFalse(BranchLabel elseLabel)
void EmitIncrement(Type type)
void EmitBranchTrue(BranchLabel elseLabel)
void EmitStringSwitch(Dictionary< string, int > cases, StrongBox< int > nullCase)
void EmitGoto(BranchLabel label, bool hasResult, bool hasValue, bool labelTargetGetsValue)
void EmitEqual(Type type, bool liftedToNull=false)
void EmitCoalescingBranch(BranchLabel leftNotNull)
void EmitCreateDelegate(LightDelegateCreator creator)
void EmitLoadLocalFromClosure(int index)
void EmitNewRuntimeVariables(int count)
InstructionArray ToArray()
void EmitLoadLocal(int index)
void EmitNegate(Type type)
void EmitLoadField(FieldInfo field)
void EmitEnterExceptionFilter()
void EmitRightShift(Type type)
void EmitLessThanOrEqual(Type type, bool liftedToNull)
void Emit(Instruction instruction)
void EmitByRefCall(MethodInfo method, ParameterInfo[] parameters, ByRefUpdater[] byrefArgs)
void EmitLoad(object value)
void EmitStoreLocal(int index)
void EmitSub(Type type, bool @checked)
void EmitNewArrayInit(Type elementType, int elementCount)
void EmitLessThan(Type type, bool liftedToNull)
void EmitMul(Type type, bool @checked)
void EmitNullableCall(MethodInfo method, ParameterInfo[] parameters)
void EmitInitializeParameter(int index)
void EmitNumericConvertChecked(TypeCode from, TypeCode to, bool isLiftedToNull)
void EmitNewArray(Type elementType)
void EmitStoreField(FieldInfo field)
void EmitAssignLocalToClosure(int index)
void EmitLeaveExceptionHandler(bool hasValue, BranchLabel tryExpressionEndLabel)
void EmitNotEqual(Type type, bool liftedToNull=false)
Instruction GetInstruction(int index)
void EmitConvertToUnderlying(TypeCode to, bool isLiftedToNull)
void EmitInitializeLocal(int index, Type type)
void EmitNegateChecked(Type type)
void EmitGreaterThan(Type type, bool liftedToNull)
void EmitEnterFinally(BranchLabel finallyStartLabel)
void EmitLoadLocalBoxed(int index)
void EmitModulo(Type type)
void EmitLeftShift(Type type)
void EmitTypeAs(Type type)
void EmitCastToEnum(Type toType)
void EmitBranch(OffsetInstruction instruction, BranchLabel label)
void EmitNumericConvertUnchecked(TypeCode from, TypeCode to, bool isLiftedToNull)
void EmitByRefNew(ConstructorInfo constructorInfo, ParameterInfo[] parameters, ByRefUpdater[] updaters)
void EmitEnterFault(BranchLabel faultStartLabel)
void EmitExclusiveOr(Type type)
void EmitCast(Type toType)
void EmitLoadLocalFromClosureBoxed(int index)
readonly LabelScopeKind Kind
bool ContainsTarget(LabelTarget target)
readonly LabelScopeInfo Parent
bool TryGetLabelInfo(LabelTarget target, [NotNullWhen(true)] out LabelInfo info)
readonly HashSet< ParameterExpression > _hoistedParameters
void PopParameters(IEnumerable< ParameterExpression > parameters)
override CatchBlock VisitCatchBlock(CatchBlock node)
override Expression VisitBlock(BlockExpression node)
void PushParameters(IEnumerable< ParameterExpression > parameters)
override Expression VisitLambda< T >(Expression< T > node)
readonly Dictionary< ParameterExpression, int > _definedParameters
override Expression VisitParameter(ParameterExpression node)
void CompileNewExpression(Expression expr)
readonly InstructionList _instructions
readonly StackGuard _guard
void CompileDefaultExpression(Expression expr)
void EmitUnaryBoolCheck(UnaryExpression node)
void CompileIntSwitchExpression< T >(SwitchExpression node)
void CompileDebugInfoExpression(Expression expr)
LightDelegateCreator CompileTop(LambdaExpression node)
void CompileSetVariable(ParameterExpression variable, bool isVoid)
LabelInfo EnsureLabel(LabelTarget node)
void CompileNotEqual(Expression left, Expression right, bool liftedToNull)
void CompileOrElseBinaryExpression(Expression expr)
void CompileLoopExpression(Expression expr)
readonly Stack< ParameterExpression > _exceptionForRethrowStack
void CompileMethodCallExpression(Expression @object, MethodInfo method, IArgumentProvider arguments)
ByRefUpdater CompileArrayIndexAddress(Expression array, Expression index, int argumentIndex)
void CompileBlockEnd(LocalDefinition[] locals)
void EmitUnaryMethodCall(UnaryExpression node)
static readonly LocalDefinition[] s_emptyLocals
void CompileMember(Expression from, MemberInfo member, bool forBinding)
void CompileMemberAssignment(BinaryExpression node, bool asVoid)
void CompileLambdaExpression(Expression expr)
void CompileVariableAssignment(BinaryExpression node, bool asVoid)
LocalVariable EnsureAvailableForClosure(ParameterExpression expr)
void CompileRuntimeVariablesExpression(Expression expr)
void CompileStringSwitchExpression(SwitchExpression node)
Interpreter MakeInterpreter(string lambdaName)
void CompileMemberInitExpression(Expression expr)
void CompileThrowUnaryExpression(Expression expr, bool asVoid)
void CompileMemberExpression(Expression expr)
void CompileInvocationExpression(Expression expr)
void CompileBlockExpression(Expression expr, bool asVoid)
void CompileBinaryExpression(Expression expr)
readonly HybridReferenceDictionary< LabelTarget, LabelInfo > _treeLabels
void CompileGetBoxedVariable(ParameterExpression variable)
void CompileComparison(BinaryExpression node)
void Compile(Expression expr, bool asVoid)
void CompileConvertToType(Type typeFrom, Type typeTo, bool isChecked, bool isLiftedToNull)
void CompileIndexExpression(Expression expr)
void CompileConditionalExpression(Expression expr, bool asVoid)
bool MaybeMutableValueType(Type type)
void CompileCoalesceBinaryExpression(Expression expr)
bool TryPushLabelBlock(Expression node)
void PopLabelBlock(LabelScopeKind kind)
void CompileMemberAssignment(bool asVoid, MemberInfo refMember, Expression value, bool forBinding)
readonly LocalVariables _locals
void CompileNewArrayExpression(Expression expr)
ByRefUpdater CompileAddress(Expression node, int index)
void CompileMethodCallExpression(Expression expr)
void CompileMemberInit(ReadOnlyCollection< MemberBinding > bindings)
readonly List< DebugInfo > _debugInfos
LightCompiler(LightCompiler parent)
void CompileListInitExpression(Expression expr)
void CompileTypeAsExpression(UnaryExpression node)
void CompileTryExpression(Expression expr)
void CompileLogicalBinaryExpression(BinaryExpression b, bool andAlso)
static Type GetMemberType(MemberInfo member)
void CompileNoLabelPush(Expression expr)
void EmitThisForMethodCall(Expression node)
void CompileListInit(ReadOnlyCollection< ElementInit > initializers)
void CompileDefaultExpression(Type type)
LocalVariable ResolveLocal(ParameterExpression variable)
void EmitCopyValueType(Type valueType)
void CompileUnliftedLogicalBinaryExpression(BinaryExpression expr, bool andAlso)
void CompileLabelExpression(Expression expr)
void CompileGotoExpression(Expression expr)
void CompileConvertUnaryExpression(Expression expr)
void DefineBlockLabels(Expression node)
InstructionList Instructions
LabelInfo DefineLabel(LabelTarget node)
void CompileUnaryExpression(Expression expr)
void CompileAndAlsoBinaryExpression(Expression expr)
void CompileConstantExpression(Expression expr)
void CompileTryFaultExpression(TryExpression expr)
LabelScopeInfo _labelBlock
void CompileMethodLogicalBinaryExpression(BinaryExpression expr, bool andAlso)
void CompileLiftedLogicalBinaryExpression(BinaryExpression node, bool andAlso)
void CompileIndexAssignment(BinaryExpression node, bool asVoid)
static bool ShouldWritebackNode(Expression node)
void CompileAssignBinaryExpression(Expression expr, bool asVoid)
LocalDefinition[] CompileBlockStart(BlockExpression node)
ByRefUpdater CompileMultiDimArrayAccess(Expression array, IArgumentProvider arguments, int index)
void CompileParameterExpression(Expression expr)
void CompileAsVoid(Expression expr)
LabelInfo ReferenceLabel(LabelTarget node)
void LoadLocalNoValueTypeCopy(ParameterExpression variable)
void CompileEqual(Expression left, Expression right, bool liftedToNull)
void CompileSwitchExpression(Expression expr)
void CompileUnboxUnaryExpression(Expression expr)
void CompileTypeIsExpression(Expression expr)
void CompileTypeEqualExpression(Expression expr)
void CompileNotExpression(UnaryExpression node)
void Compile(Expression expr)
void CompileQuoteUnaryExpression(Expression expr)
void CompileArithmetic(ExpressionType nodeType, Expression left, Expression right)
void CompileGetVariable(ParameterExpression variable)
void PushLabelBlock(LabelScopeKind type)
void EmitIndexGet(IndexExpression index)
readonly LightCompiler _parent
void Box(ParameterExpression variable, InstructionList instructions)
bool TryGetLocalOrClosure(ParameterExpression var, [NotNullWhen(true)] out LocalVariable local)
LocalVariable AddClosureVariable(ParameterExpression variable)
void UndefineLocal(LocalDefinition definition, int end)
LocalDefinition DefineLocal(ParameterExpression variable, int start)
static readonly Instruction Instance
static Instruction CreateGetValue()
static object GetPrimitiveDefaultValue(Type type)
static readonly ValueTypeCopyInstruction Instruction
static MethodInfo GetCompileMethod(Type lambdaExpressionType)
bool TryEnterOnCurrentStack()
ReadOnlyCollection< Expression > TestValues
static readonly object BoxedTrue
static readonly object BoxedFalse
static readonly DefaultExpression Empty
MethodInfo? GetGetMethod()
static string Format(string resourceFormat, object p1)
static string UnsupportedExpressionType