1 write to Header
Microsoft.Diagnostics.DataContractReader.Contracts (1)
Contracts\GCInfo\X86\GCInfo.cs (1)
120
Header
= InfoHdr.DecodeHeader(target, ref offset, MethodSize, (int)gcInfoVersion);
99 references to Header
Microsoft.Diagnostics.DataContractReader.Contracts (99)
Contracts\GCInfo\X86\GCInfo.cs (78)
124
if (relativeOffset <
Header
.PrologSize)
130
foreach (uint epilogStart in
Header
.Epilogs)
132
if (relativeOffset > epilogStart && relativeOffset < epilogStart +
Header
.EpilogSize)
139
uint frameDwordCount =
Header
.FrameSize;
146
if (
Header
.EdiSaved)
151
if (
Header
.EsiSaved)
156
if (
Header
.EbxSaved)
161
if (
Header
.EbpSaved)
169
if (
Header
.EbpFrame ||
Header
.DoubleAlign)
171
Debug.Assert(
Header
.EbpSaved);
196
if (
Header
.NoGCRegionCount == 0)
202
ImmutableArray<NoGCRegion>.Builder builder = ImmutableArray.CreateBuilder<NoGCRegion>((int)
Header
.NoGCRegionCount);
203
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
215
if (
Header
.HasArgTabOffset)
218
argTabPtr = _gcInfoAddress + _infoHdrSize +
Header
.ArgTabOffset;
228
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
236
for (int i = 0; i <
Header
.UntrackedCount; i++)
243
for (int i = 0; i <
Header
.VarPtrTableSize; i++)
251
GCArgTable argTable = new(_target,
Header
, argTabPtr);
317
if (
Header
.UntrackedCount == 0)
323
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
337
if (
Header
.DoubleAlign)
339
if (
Header
.EdiSaved) calleeSavedRegsCount++;
340
if (
Header
.EsiSaved) calleeSavedRegsCount++;
341
if (
Header
.EbxSaved) calleeSavedRegsCount++;
344
ImmutableArray<UntrackedSlot>.Builder builder = ImmutableArray.CreateBuilder<UntrackedSlot>((int)
Header
.UntrackedCount);
346
for (uint i = 0; i <
Header
.UntrackedCount; i++)
356
bool isEbpRelative =
Header
.EbpFrame;
357
if (
Header
.DoubleAlign &&
358
(uint)stkOffs >= _target.PointerSize * (
Header
.FrameSize + calleeSavedRegsCount))
362
stkOffs -= (int)(_target.PointerSize * (
Header
.FrameSize + calleeSavedRegsCount));
373
if (
Header
.VarPtrTableSize == 0)
378
for (int i = 0; i <
Header
.NoGCRegionCount; i++)
383
for (int i = 0; i <
Header
.UntrackedCount; i++)
393
ImmutableArray<VarPtrLifetime>.Builder builder = ImmutableArray.CreateBuilder<VarPtrLifetime>((int)
Header
.VarPtrTableSize);
395
for (uint i = 0; i <
Header
.VarPtrTableSize; i++)
406
if (
Header
.EbpFrame)
423
=> codeOffset <
Header
.PrologSize;
430
foreach (uint epilogStart in
Header
.Epilogs)
432
if (codeOffset > epilogStart && codeOffset < epilogStart +
Header
.EpilogSize)
467
if (!
Header
.GenericsContext || !
Header
.EbpFrame)
471
+ (
Header
.SyncStartOffset != INVALID_SYNC_OFFSET ? 1u : 0u)
472
+ (
Header
.LocalAlloc ? 1u : 0u)
496
if (!
Header
.GenericsContext || UntrackedSlots.IsEmpty)
500
if (
Header
.EbpFrame)
524
if (
Header
.Interruptible ? offset > instructionOffset : offset >= instructionOffset)
529
if (
Header
.Interruptible && transition is GcTransitionRegister registerTransition)
563
if (
Header
.Handlers)
566
if (
Header
.EbpFrame)
574
if (
Header
.LocalAlloc)
585
Debug.Assert(
Header
.LocalAlloc &&
Header
.EbpFrame);
587
+ (
Header
.SyncStartOffset != INVALID_SYNC_OFFSET ? 1u : 0u)
597
return
Header
.VarArgs ? 0u :
Header
.ArgCount * (uint)_target.PointerSize;
614
if (
Header
.Interruptible)
618
uint cursor =
Header
.PrologSize;
621
foreach (int epilogStart in
Header
.Epilogs.OrderBy(e => e))
624
uint eEnd = eStart +
Header
.EpilogSize;
642
if ((uint)offset <
Header
.PrologSize)
664
if (!
Header
.Interruptible)
701
if (options.IsExecutionAborted && !
Header
.Interruptible)
710
int espBias =
Header
.EbpFrame ? 0 : (int)CalculatePushedArgSizeAt(instructionOffset);
730
uint spBase =
Header
.EbpFrame ? FRAMEREG_REL : SP_REL;
740
int spOffset =
Header
.EbpFrame ? vp.StackOffset : vp.StackOffset + espBias;
1003
GenericsContextKind genericsKind =
Header
.GenericsContext
1004
? (
Header
.GenericsContextIsMethodDesc ? GenericsContextKind.MethodDesc : GenericsContextKind.MethodHandle)
1007
SpecialSlot? gsCookie =
Header
.GsCookieOffset != 0
1008
? new SpecialSlot((int)
Header
.GsCookieOffset)
1014
PrologSize:
Header
.PrologSize,
1015
StackBaseRegister: RegMaskToRegisterNumber((
Header
.EbpFrame ||
Header
.DoubleAlign) ? RegMask.EBP : RegMask.ESP),
1017
IsVarArg:
Header
.VarArgs,
1021
GSCookieValidRangeStart: gsCookie.HasValue ? (uint)
Header
.PrologSize : 0,
1030
if (
Header
.Interruptible)
1036
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;