Rearranged checks (#92)

* Rearranged checks

Rearranged checks so that the method is completed as quickly as possible

* Typo
This commit is contained in:
Martin Stühmer 2019-11-30 03:11:13 +01:00 committed by Ben Adams
parent c74b6d4fa7
commit c061f764bd

View File

@ -19,7 +19,7 @@ namespace System.Diagnostics
{ {
public partial class EnhancedStackTrace public partial class EnhancedStackTrace
{ {
private static readonly Type StackTraceHiddenAttibuteType = Type.GetType("System.Diagnostics.StackTraceHiddenAttribute", false); private static readonly Type StackTraceHiddenAttributeType = Type.GetType("System.Diagnostics.StackTraceHiddenAttribute", false);
private static List<EnhancedStackFrame> GetFrames(Exception exception) private static List<EnhancedStackFrame> GetFrames(Exception exception)
{ {
@ -625,7 +625,24 @@ namespace System.Diagnostics
private static bool ShowInStackTrace(MethodBase method) private static bool ShowInStackTrace(MethodBase method)
{ {
Debug.Assert(method != null); Debug.Assert(method != null);
if (StackTraceHiddenAttributeType != null)
{
// Don't show any methods marked with the StackTraceHiddenAttribute
// https://github.com/dotnet/coreclr/pull/14652
if (IsStackTraceHidden(method))
{
return false;
}
}
var type = method.DeclaringType; var type = method.DeclaringType;
if (type == null)
{
return true;
}
if (type == typeof(Task<>) && method.Name == "InnerInvoke") if (type == typeof(Task<>) && method.Name == "InnerInvoke")
{ {
return false; return false;
@ -652,22 +669,7 @@ namespace System.Diagnostics
} }
} }
if (StackTraceHiddenAttibuteType != null) if (StackTraceHiddenAttributeType != null)
{
// Don't show any methods marked with the StackTraceHiddenAttribute
// https://github.com/dotnet/coreclr/pull/14652
if (IsStackTraceHidden(method))
{
return false;
}
}
if (type == null)
{
return true;
}
if (StackTraceHiddenAttibuteType != null)
{ {
// Don't show any types marked with the StackTraceHiddenAttribute // Don't show any types marked with the StackTraceHiddenAttribute
// https://github.com/dotnet/coreclr/pull/14652 // https://github.com/dotnet/coreclr/pull/14652
@ -710,7 +712,7 @@ namespace System.Diagnostics
{ {
if (!memberInfo.Module.Assembly.ReflectionOnly) if (!memberInfo.Module.Assembly.ReflectionOnly)
{ {
return memberInfo.GetCustomAttributes(StackTraceHiddenAttibuteType, false).Length != 0; return memberInfo.GetCustomAttributes(StackTraceHiddenAttributeType, false).Length != 0;
} }
EnumerableIList<CustomAttributeData> attributes; EnumerableIList<CustomAttributeData> attributes;
@ -726,7 +728,7 @@ namespace System.Diagnostics
foreach (var attribute in attributes) foreach (var attribute in attributes)
{ {
// reflection-only attribute, match on name // reflection-only attribute, match on name
if (attribute.AttributeType.FullName == StackTraceHiddenAttibuteType.FullName) if (attribute.AttributeType.FullName == StackTraceHiddenAttributeType.FullName)
{ {
return true; return true;
} }