|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace Microsoft.Diagnostics.DataContractReader.Data;
internal sealed class ExceptionInfo : IData<ExceptionInfo>
{
static ExceptionInfo IData<ExceptionInfo>.Create(Target target, TargetPointer address)
=> new ExceptionInfo(target, address);
public ExceptionInfo(Target target, TargetPointer address)
{
Target.TypeInfo type = target.GetTypeInfo(DataType.ExceptionInfo);
PreviousNestedInfo = target.ReadPointerField(address, type, nameof(PreviousNestedInfo));
ThrownObject = target.ReadPointerField(address, type, nameof(ThrownObject));
if (type.Fields.ContainsKey(nameof(ExceptionWatsonBucketTrackerBuckets)))
ExceptionWatsonBucketTrackerBuckets = target.ReadPointerField(address, type, nameof(ExceptionWatsonBucketTrackerBuckets));
ExceptionFlags = target.ReadField<uint>(address, type, nameof(ExceptionFlags));
StackLowBound = target.ReadPointerField(address, type, nameof(StackLowBound));
StackHighBound = target.ReadPointerField(address, type, nameof(StackHighBound));
PassNumber = target.ReadField<byte>(address, type, nameof(PassNumber));
CSFEHClause = target.ReadPointerField(address, type, nameof(CSFEHClause));
CSFEnclosingClause = target.ReadPointerField(address, type, nameof(CSFEnclosingClause));
CallerOfActualHandlerFrame = target.ReadPointerField(address, type, nameof(CallerOfActualHandlerFrame));
ClauseForCatchHandlerStartPC = target.ReadField<uint>(address, type, nameof(ClauseForCatchHandlerStartPC));
ClauseForCatchHandlerEndPC = target.ReadField<uint>(address, type, nameof(ClauseForCatchHandlerEndPC));
}
public TargetPointer PreviousNestedInfo { get; }
public TargetPointer ThrownObject { get; }
public uint ExceptionFlags { get; }
public TargetPointer StackLowBound { get; }
public TargetPointer StackHighBound { get; }
public TargetPointer ExceptionWatsonBucketTrackerBuckets { get; }
public byte PassNumber { get; }
public TargetPointer CSFEHClause { get; }
public TargetPointer CSFEnclosingClause { get; }
public TargetPointer CallerOfActualHandlerFrame { get; }
public uint ClauseForCatchHandlerStartPC { get; }
public uint ClauseForCatchHandlerEndPC { get; }
}
|