You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// mirrors native enum that distinguishes code heap types
90
+
privateenumCodeHeapType : byte
91
+
{
92
+
LoaderCodeHeap=0,
93
+
HostCodeHeap=1,
94
+
UnknownCodeHeap=0xff
95
+
}
96
+
```
97
+
59
98
```csharp
60
99
publicstructExceptionClauseInfo
61
100
{
@@ -109,6 +148,11 @@ Data descriptors used:
109
148
|`CodeHeapListNode`|`EndAddress`| End address of the used portion of the code heap |
110
149
|`CodeHeapListNode`|`MapBase`| Start of the map - start address rounded down based on OS page size |
111
150
|`CodeHeapListNode`|`HeaderMap`| Bit array used to find the start of methods - relative to `MapBase`|
151
+
|`CodeHeapListNode`|`Heap`| Pointer to the `CodeHeap` object managed by this node |
152
+
|`CodeHeap`|`HeapType`|`uint8` discriminant identifying the concrete heap type |
153
+
|`LoaderCodeHeap`|`LoaderHeap`| Offset of the embedded `ExplicitControlLoaderHeap` within the `LoaderCodeHeap` object; adding this to the object's base address yields the loader heap address |
154
+
|`HostCodeHeap`|`BaseAddress`| Pointer to the base of the committed memory region |
155
+
|`HostCodeHeap`|`CurrentAddress`| Pointer to the last available committed byte in the region |
112
156
|`EEJitManager`|`StoreRichDebugInfo`| Boolean value determining if debug info associated with the JitManager contains rich info. |
113
157
|`EEJitManager`|`AllCodeHeaps`| Pointer to the head of the linked list of all code heaps managed by the EEJitManager. |
114
158
|`RealCodeHeader`|`MethodDesc`| Pointer to the corresponding `MethodDesc`|
@@ -457,6 +501,52 @@ After obtaining the clause array bounds, the common iteration logic classifies e
457
501
458
502
`IsFilterFunclet` first checks `IsFunclet`. If the code block is a funclet, it retrieves the EH clauses for the method and checks whether any filter clause's handler offset matches the funclet's relative offset. If a match is found, the funclet is a filter funclet.
Copy file name to clipboardExpand all lines: src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs
Copy file name to clipboardExpand all lines: src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs
+35Lines changed: 35 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -62,6 +62,15 @@ private enum RangeSectionFlags : int
62
62
RangeList=0x04,
63
63
}
64
64
65
+
// Mirrors the native CodeHeap::CodeHeapType enum in codeman.h.
66
+
// Used to interpret the raw byte stored in the target process.
Copy file name to clipboardExpand all lines: src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs
0 commit comments