9
9
10
10
namespace R2RDump
11
11
{
12
- class GcInfo
12
+ public class GcInfo
13
13
{
14
14
private enum GcInfoHeaderFlags
15
15
{
@@ -33,8 +33,8 @@ private enum GcInfoHeaderFlags
33
33
34
34
public struct InterruptibleRange
35
35
{
36
- public uint StartOffset { get ; }
37
- public uint StopOffset { get ; }
36
+ public uint StartOffset { get ; set ; }
37
+ public uint StopOffset { get ; set ; }
38
38
public InterruptibleRange ( uint start , uint stop )
39
39
{
40
40
StartOffset = start ;
@@ -55,26 +55,28 @@ public InterruptibleRange(uint start, uint stop)
55
55
private bool _hasSizeOfEditAndContinuePreservedArea ;
56
56
private bool _hasReversePInvokeFrame ;
57
57
58
- public int Version { get ; }
59
- public int CodeLength { get ; }
60
- public ReturnKinds ReturnKind { get ; }
61
- public uint ValidRangeStart { get ; }
62
- public uint ValidRangeEnd { get ; }
63
- public int SecurityObjectStackSlot { get ; }
64
- public int GSCookieStackSlot { get ; }
65
- public int PSPSymStackSlot { get ; }
66
- public int GenericsInstContextStackSlot { get ; }
67
- public uint StackBaseRegister { get ; }
68
- public uint SizeOfEditAndContinuePreservedArea { get ; }
69
- public int ReversePInvokeFrameStackSlot { get ; }
70
- public uint SizeOfStackOutgoingAndScratchArea { get ; }
71
- public uint NumSafePoints { get ; }
72
- public uint NumInterruptibleRanges { get ; }
73
- public IEnumerable < uint > SafePointOffsets { get ; }
74
- public IEnumerable < InterruptibleRange > InterruptibleRanges { get ; }
75
- public GcSlotTable SlotTable { get ; }
76
- public int Size { get ; }
77
- public int Offset { get ; }
58
+ public int Version { get ; set ; }
59
+ public int CodeLength { get ; set ; }
60
+ public ReturnKinds ReturnKind { get ; set ; }
61
+ public uint ValidRangeStart { get ; set ; }
62
+ public uint ValidRangeEnd { get ; set ; }
63
+ public int SecurityObjectStackSlot { get ; set ; }
64
+ public int GSCookieStackSlot { get ; set ; }
65
+ public int PSPSymStackSlot { get ; set ; }
66
+ public int GenericsInstContextStackSlot { get ; set ; }
67
+ public uint StackBaseRegister { get ; set ; }
68
+ public uint SizeOfEditAndContinuePreservedArea { get ; set ; }
69
+ public int ReversePInvokeFrameStackSlot { get ; set ; }
70
+ public uint SizeOfStackOutgoingAndScratchArea { get ; set ; }
71
+ public uint NumSafePoints { get ; set ; }
72
+ public uint NumInterruptibleRanges { get ; set ; }
73
+ public List < uint > SafePointOffsets { get ; set ; }
74
+ public List < InterruptibleRange > InterruptibleRanges { get ; set ; }
75
+ public GcSlotTable SlotTable { get ; set ; }
76
+ public int Size { get ; set ; }
77
+ public int Offset { get ; set ; }
78
+
79
+ public GcInfo ( ) { }
78
80
79
81
public GcInfo ( byte [ ] image , int offset , Machine machine , ushort majorVersion )
80
82
{
@@ -249,7 +251,7 @@ private void ParseHeaderFlags(byte[] image, ref int bitOffset)
249
251
}
250
252
}
251
253
252
- private IEnumerable < uint > EnumerateSafePoints ( byte [ ] image , ref int bitOffset )
254
+ private List < uint > EnumerateSafePoints ( byte [ ] image , ref int bitOffset )
253
255
{
254
256
List < uint > safePoints = new List < uint > ( ) ;
255
257
uint numBitsPerOffset = GcInfoTypes . CeilOfLog2 ( CodeLength ) ;
@@ -261,7 +263,7 @@ private IEnumerable<uint> EnumerateSafePoints(byte[] image, ref int bitOffset)
261
263
return safePoints ;
262
264
}
263
265
264
- private IEnumerable < InterruptibleRange > EnumerateInterruptibleRanges ( byte [ ] image , int interruptibleRangeDelta1EncBase , int interruptibleRangeDelta2EncBase , ref int bitOffset )
266
+ private List < InterruptibleRange > EnumerateInterruptibleRanges ( byte [ ] image , int interruptibleRangeDelta1EncBase , int interruptibleRangeDelta2EncBase , ref int bitOffset )
265
267
{
266
268
List < InterruptibleRange > ranges = new List < InterruptibleRange > ( ) ;
267
269
uint lastinterruptibleRangeStopOffset = 0 ;
0 commit comments