Skip to content

Commit 7949ee5

Browse files
committed
Merge upstream master conversion helper optimizations
2 parents f089ff5 + 233ed5a commit 7949ee5

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

‎.vscode/settings.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"NETSTANDARD",
4444
"Newarr",
4545
"Newobj",
46+
"Oper",
4647
"outparameter",
4748
"shortcircuit",
4849
"stackchange",

‎src/FastExpressionCompiler/FastExpressionCompiler.cs‎

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11571,10 +11571,13 @@ internal static bool IsReturnable(this Expression expr)
1157111571
!IsBracedBlockLike(nodeType);
1157211572
}
1157311573

11574-
internal static Expression StripConvertRecursively(this Expression expr) =>
11575-
expr is UnaryExpression convert && convert.NodeType == ExpressionType.Convert
11576-
? StripConvertRecursively(convert.Operand)
11577-
: expr;
11574+
[MethodImpl((MethodImplOptions)256)]
11575+
internal static Expression StripConvertRecursively(this Expression expr)
11576+
{
11577+
while (expr is UnaryExpression unExpr && unExpr.NodeType == ExpressionType.Convert)
11578+
expr = unExpr.Operand;
11579+
return expr;
11580+
}
1157811581

1157911582
internal static bool IsComplexExpression(this Expression expr)
1158011583
{
@@ -11590,13 +11593,14 @@ internal static bool IsConstantOrDefault(this Expression expr)
1159011593
| nodeType == ExpressionType.Default;
1159111594
}
1159211595

11593-
internal static bool IsParamOrConstantOrDefault(this Expression expr)
11594-
{
11595-
var nodeType = StripConvertRecursively(expr).NodeType;
11596-
return nodeType == ExpressionType.Parameter
11597-
| nodeType == ExpressionType.Constant
11598-
| nodeType == ExpressionType.Default;
11599-
}
11596+
[MethodImpl((MethodImplOptions)256)]
11597+
internal static bool IsParamOrConstantOrDefault(this ExpressionType nodeType) =>
11598+
nodeType == ExpressionType.Parameter |
11599+
nodeType == ExpressionType.Constant |
11600+
nodeType == ExpressionType.Default;
11601+
11602+
internal static bool IsParamOrConstantOrDefault(this Expression expr) =>
11603+
StripConvertRecursively(expr).NodeType.IsParamOrConstantOrDefault();
1160011604

1160111605
internal static string GetCSharpName(this MemberInfo m)
1160211606
{

0 commit comments

Comments
 (0)