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