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