1 write to Header
Microsoft.Diagnostics.DataContractReader.Contracts (1)
Contracts\GCInfo\X86\GCInfo.cs (1)
121
Header
= InfoHdr.DecodeHeader(target, ref offset, MethodSize, (int)gcInfoVersion);
99 references to Header
Microsoft.Diagnostics.DataContractReader.Contracts (99)
Contracts\GCInfo\X86\GCInfo.cs (78)
125
if (relativeOffset <
Header
.PrologSize)
131
foreach (uint epilogStart in
Header
.Epilogs)
133
if (relativeOffset > epilogStart && relativeOffset < epilogStart +
Header
.EpilogSize)
140
uint frameDwordCount =
Header
.FrameSize;
147
if (
Header
.EdiSaved)
152
if (
Header
.EsiSaved)
157
if (
Header
.EbxSaved)
162
if (
Header
.EbpSaved)
171
if (
Header
.EbpFrame ||
Header
.DoubleAlign)
173
Debug.Assert(
Header
.EbpSaved);
198
if (
Header
.NoGCRegionCount == 0)
204
ImmutableArray<NoGCRegion>.Builder builder = ImmutableArray.CreateBuilder<NoGCRegion>((int)
Header
.NoGCRegionCount);
205
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
217
if (
Header
.HasArgTabOffset)
220
argTabPtr = _gcInfoAddress + _infoHdrSize +
Header
.ArgTabOffset;
230
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
238
for (int i = 0; i <
Header
.UntrackedCount; i++)
245
for (int i = 0; i <
Header
.VarPtrTableSize; i++)
253
GCArgTable argTable = new(_target,
Header
, argTabPtr);
319
if (
Header
.UntrackedCount == 0)
325
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
339
if (
Header
.DoubleAlign)
341
if (
Header
.EdiSaved) calleeSavedRegsCount++;
342
if (
Header
.EsiSaved) calleeSavedRegsCount++;
343
if (
Header
.EbxSaved) calleeSavedRegsCount++;
346
ImmutableArray<UntrackedSlot>.Builder builder = ImmutableArray.CreateBuilder<UntrackedSlot>((int)
Header
.UntrackedCount);
348
for (uint i = 0; i <
Header
.UntrackedCount; i++)
358
bool isEbpRelative =
Header
.EbpFrame;
359
if (
Header
.DoubleAlign &&
360
(uint)stkOffs >= _target.PointerSize * (
Header
.FrameSize + calleeSavedRegsCount))
364
stkOffs -= (int)(_target.PointerSize * (
Header
.FrameSize + calleeSavedRegsCount));
375
if (
Header
.VarPtrTableSize == 0)
380
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
385
for (int i = 0; i <
Header
.UntrackedCount; i++)
395
ImmutableArray<VarPtrLifetime>.Builder builder = ImmutableArray.CreateBuilder<VarPtrLifetime>((int)
Header
.VarPtrTableSize);
397
for (uint i = 0; i <
Header
.VarPtrTableSize; i++)
408
if (
Header
.EbpFrame)
425
=> codeOffset <
Header
.PrologSize;
432
foreach (uint epilogStart in
Header
.Epilogs)
434
if (codeOffset > epilogStart && codeOffset < epilogStart +
Header
.EpilogSize)
469
if (!
Header
.GenericsContext || !
Header
.EbpFrame)
473
+ (
Header
.SyncStartOffset != INVALID_SYNC_OFFSET ? 1u : 0u)
474
+ (
Header
.LocalAlloc ? 1u : 0u)
498
if (!
Header
.GenericsContext || UntrackedSlots.IsEmpty)
502
if (
Header
.EbpFrame)
526
if (
Header
.Interruptible ? offset > instructionOffset : offset >= instructionOffset)
531
if (
Header
.Interruptible && transition is GcTransitionRegister registerTransition)
565
if (
Header
.Handlers)
568
if (
Header
.EbpFrame)
576
if (
Header
.LocalAlloc)
587
Debug.Assert(
Header
.LocalAlloc &&
Header
.EbpFrame);
589
+ (
Header
.SyncStartOffset != INVALID_SYNC_OFFSET ? 1u : 0u)
599
return
Header
.VarArgs ? 0u :
Header
.ArgCount * (uint)_target.PointerSize;
616
if (
Header
.Interruptible)
620
uint cursor =
Header
.PrologSize;
623
foreach (int epilogStart in
Header
.Epilogs.OrderBy(e => e))
626
uint eEnd = eStart +
Header
.EpilogSize;
644
if ((uint)offset <
Header
.PrologSize)
666
if (!
Header
.Interruptible)
703
if (options.IsExecutionAborted && !
Header
.Interruptible)
712
int espBias =
Header
.EbpFrame ? 0 : (int)CalculatePushedArgSizeAt(instructionOffset);
732
uint spBase =
Header
.EbpFrame ? FRAMEREG_REL : SP_REL;
742
int spOffset =
Header
.EbpFrame ? vp.StackOffset : vp.StackOffset + espBias;
1005
GenericsContextKind genericsKind =
Header
.GenericsContext
1006
? (
Header
.GenericsContextIsMethodDesc ? GenericsContextKind.MethodDesc : GenericsContextKind.MethodHandle)
1009
SpecialSlot? gsCookie =
Header
.GsCookieOffset != 0
1010
? new SpecialSlot((int)
Header
.GsCookieOffset)
1016
PrologSize:
Header
.PrologSize,
1017
StackBaseRegister: RegMaskToRegisterNumber((
Header
.EbpFrame ||
Header
.DoubleAlign) ? RegMask.EBP : RegMask.ESP),
1019
IsVarArg:
Header
.VarArgs,
1023
GSCookieValidRangeStart: gsCookie.HasValue ? (uint)
Header
.PrologSize : 0,
1032
if (
Header
.Interruptible)
1038
if ((uint)offset <
Header
.PrologSize)
Contracts\StackWalk\Context\X86\X86Unwinder.cs (21)
74
else if (!gcInfo.
Header
.EbpFrame && !gcInfo.
Header
.DoubleAlign)
105
if (gcInfo.
Header
.EbpFrame || gcInfo.
Header
.DoubleAlign)
129
if (gcInfo.
Header
.DoubleAlign)
147
if (gcInfo.
Header
.LocalAlloc)
248
Debug.Assert(!gcInfo.
Header
.EbpFrame && !gcInfo.
Header
.DoubleAlign);
313
Debug.Assert(!gcInfo.
Header
.EbpFrame && !gcInfo.
Header
.DoubleAlign);
354
Debug.Assert(!gcInfo.
Header
.EbpFrame && !gcInfo.
Header
.DoubleAlign);
435
Debug.Assert(gcInfo.
Header
.EbpFrame || gcInfo.
Header
.DoubleAlign);
441
if (gcInfo.
Header
.Handlers && !gcInfo.IsInProlog)
488
if (gcInfo.
Header
.DoubleAlign && (curEbp & 0x04) != 0)
517
Debug.Assert(gcInfo.
Header
.EbpFrame || gcInfo.
Header
.DoubleAlign);
564
if (gcInfo.
Header
.DoubleAlign)
617
uint stackParameterSize = gcInfo.
Header
.VarArgs ? 0 // varargs are caller-popped
618
: gcInfo.
Header
.ArgCount * _pointerSize;