Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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);
        }