internal static ClrMethod Create(DesktopRuntimeBase runtime, IMethodDescData mdData) { if (mdData == null) return null; DesktopModule module = runtime.GetModule(mdData.Module); return Create(runtime, module != null ? module.GetMetadataImport() : null, mdData); }
internal static ClrMethod Create(DesktopRuntimeBase runtime, IMethodDescData mdData) { if (mdData == null) { return(null); } DesktopModule module = runtime.GetModule(mdData.Module); return(Create(runtime, module?.GetMetadataImport(), mdData)); }
public override string ToString(bool detailed) { string value = null; switch (Type) { case ClrMemoryRegionType.LowFrequencyLoaderHeap: value = "Low Frequency Loader Heap"; break; case ClrMemoryRegionType.HighFrequencyLoaderHeap: value = "High Frequency Loader Heap"; break; case ClrMemoryRegionType.StubHeap: value = "Stub Heap"; break; // Virtual Call Stub heaps case ClrMemoryRegionType.IndcellHeap: value = "Indirection Cell Heap"; break; case ClrMemoryRegionType.LookupHeap: value = "Loopup Heap"; break; case ClrMemoryRegionType.ResolveHeap: value = "Resolver Heap"; break; case ClrMemoryRegionType.DispatchHeap: value = "Dispatch Heap"; break; case ClrMemoryRegionType.CacheEntryHeap: value = "Cache Entry Heap"; break; // Other regions case ClrMemoryRegionType.JitHostCodeHeap: value = "JIT Host Code Heap"; break; case ClrMemoryRegionType.JitLoaderCodeHeap: value = "JIT Loader Code Heap"; break; case ClrMemoryRegionType.ModuleThunkHeap: value = "Thunk Heap"; break; case ClrMemoryRegionType.ModuleLookupTableHeap: value = "Lookup Table Heap"; break; case ClrMemoryRegionType.HandleTableChunk: value = "GC Handle Table Chunk"; break; case ClrMemoryRegionType.ReservedGCSegment: case ClrMemoryRegionType.GCSegment: if (_segmentType == GCSegmentType.Ephemeral) { value = "Ephemeral Segment"; } else if (_segmentType == GCSegmentType.LargeObject) { value = "Large Object Segment"; } else { value = "GC Segment"; } if (Type == ClrMemoryRegionType.ReservedGCSegment) { value += " (Reserved)"; } break; default: // should never happen. value = "<unknown>"; break; } if (detailed) { if (HasAppDomainData) { if (_domainModuleHeap == _runtime.SharedDomainAddress) { value = string.Format("{0} for Shared AppDomain", value); } else if (_domainModuleHeap == _runtime.SystemDomainAddress) { value = string.Format("{0} for System AppDomain", value); } else { ClrAppDomain domain = AppDomain; value = string.Format("{0} for AppDomain {1}: {2}", value, domain.Id, domain.Name); } } else if (HasModuleData) { string fn = _runtime.GetModule(_domainModuleHeap).FileName; value = string.Format("{0} for Module: {1}", value, Path.GetFileName(fn)); } else if (HasGCHeapData) { value = string.Format("{0} for Heap {1}", value, HeapNumber); } } return(value); }