Exemplo n.º 1
0
        public IEnumerable<MemoryRegion> EnumerateHeaps(IAppDomainData appDomain)
        {
            Debug.Assert(appDomain != null);
            mAppDomain = appDomain.Address;
            mRegions.Clear();

            // Standard heaps.
            mType = ClrMemoryRegionType.LowFrequencyLoaderHeap;
            mRuntime.TraverseHeap(appDomain.LowFrequencyHeap, mDelegate);

            mType = ClrMemoryRegionType.HighFrequencyLoaderHeap;
            mRuntime.TraverseHeap(appDomain.HighFrequencyHeap, mDelegate);

            mType = ClrMemoryRegionType.StubHeap;
            mRuntime.TraverseHeap(appDomain.StubHeap, mDelegate);

            // Stub heaps.
            mType = ClrMemoryRegionType.IndcellHeap;
            mRuntime.TraverseStubHeap(mAppDomain, (int)InternalHeapTypes.IndcellHeap, mDelegate);

            mType = ClrMemoryRegionType.LookupHeap;
            mRuntime.TraverseStubHeap(mAppDomain, (int)InternalHeapTypes.LookupHeap, mDelegate);

            mType = ClrMemoryRegionType.ResolveHeap;
            mRuntime.TraverseStubHeap(mAppDomain, (int)InternalHeapTypes.ResolveHeap, mDelegate);

            mType = ClrMemoryRegionType.DispatchHeap;
            mRuntime.TraverseStubHeap(mAppDomain, (int)InternalHeapTypes.DispatchHeap, mDelegate);

            mType = ClrMemoryRegionType.CacheEntryHeap;
            mRuntime.TraverseStubHeap(mAppDomain, (int)InternalHeapTypes.CacheEntryHeap, mDelegate);

            return mRegions;
        }
Exemplo n.º 2
0
        public IEnumerable <MemoryRegion> EnumerateHeaps(IAppDomainData appDomain)
        {
            Debug.Assert(appDomain != null);
            _appDomain = appDomain.Address;
            _regions.Clear();

            // Standard heaps.
            _type = ClrMemoryRegionType.LowFrequencyLoaderHeap;
            _runtime.TraverseHeap(appDomain.LowFrequencyHeap, _delegate);

            _type = ClrMemoryRegionType.HighFrequencyLoaderHeap;
            _runtime.TraverseHeap(appDomain.HighFrequencyHeap, _delegate);

            _type = ClrMemoryRegionType.StubHeap;
            _runtime.TraverseHeap(appDomain.StubHeap, _delegate);

            // Stub heaps.
            _type = ClrMemoryRegionType.IndcellHeap;
            _runtime.TraverseStubHeap(_appDomain, (int)InternalHeapTypes.IndcellHeap, _delegate);

            _type = ClrMemoryRegionType.LookupHeap;
            _runtime.TraverseStubHeap(_appDomain, (int)InternalHeapTypes.LookupHeap, _delegate);

            _type = ClrMemoryRegionType.ResolveHeap;
            _runtime.TraverseStubHeap(_appDomain, (int)InternalHeapTypes.ResolveHeap, _delegate);

            _type = ClrMemoryRegionType.DispatchHeap;
            _runtime.TraverseStubHeap(_appDomain, (int)InternalHeapTypes.DispatchHeap, _delegate);

            _type = ClrMemoryRegionType.CacheEntryHeap;
            _runtime.TraverseStubHeap(_appDomain, (int)InternalHeapTypes.CacheEntryHeap, _delegate);

            return(_regions);
        }
Exemplo n.º 3
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type)
 {
     Address  = addr;
     Size     = size;
     _runtime = clr;
     Type     = type;
 }
Exemplo n.º 4
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type, ClrAppDomain domain)
 {
     Address           = addr;
     Size              = size;
     _runtime          = clr;
     Type              = type;
     _domainModuleHeap = domain.Address;
 }
Exemplo n.º 5
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type, uint heap, GCSegmentType seg)
 {
     Address           = addr;
     Size              = size;
     _runtime          = clr;
     Type              = type;
     _domainModuleHeap = heap;
     _segmentType      = seg;
 }
Exemplo n.º 6
0
        public IEnumerable <MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            _appDomain = 0;
            _regions.Clear();

            _type = ClrMemoryRegionType.JitLoaderCodeHeap;
            _runtime.TraverseHeap(heap, _delegate);

            return(_regions);
        }
Exemplo n.º 7
0
        public IEnumerable <MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            mAppDomain = 0;
            mRegions.Clear();

            mType = ClrMemoryRegionType.JitLoaderCodeHeap;
            mRuntime.TraverseHeap(heap, mDelegate);

            return(mRegions);
        }
Exemplo n.º 8
0
        public IEnumerable<MemoryRegion> EnumerateModuleHeaps(IAppDomainData appDomain, ulong addr)
        {
            Debug.Assert(appDomain != null);
            mAppDomain = appDomain.Address;
            mRegions.Clear();

            if (addr == 0)
                return mRegions;

            IModuleData module = mRuntime.GetModuleData(addr);
            if (module != null)
            {
                mType = ClrMemoryRegionType.ModuleThunkHeap;
                mRuntime.TraverseHeap(module.ThunkHeap, mDelegate);

                mType = ClrMemoryRegionType.ModuleLookupTableHeap;
                mRuntime.TraverseHeap(module.LookupTableHeap, mDelegate);
            }

            return mRegions;
        }
Exemplo n.º 9
0
        public IEnumerable<MemoryRegion> EnumerateModuleHeaps(IAppDomainData appDomain, ulong addr)
        {
            Debug.Assert(appDomain != null);
            _appDomain = appDomain.Address;
            _regions.Clear();

            if (addr == 0)
                return _regions;

            IModuleData module = _runtime.GetModuleData(addr);
            if (module != null)
            {
                _type = ClrMemoryRegionType.ModuleThunkHeap;
                _runtime.TraverseHeap(module.ThunkHeap, _delegate);

                _type = ClrMemoryRegionType.ModuleLookupTableHeap;
                _runtime.TraverseHeap(module.LookupTableHeap, _delegate);
            }

            return _regions;
        }
Exemplo n.º 10
0
        public IEnumerable <MemoryRegion> EnumerateModuleHeaps(IAppDomainData appDomain, ulong addr)
        {
            Debug.Assert(appDomain != null);
            mAppDomain = appDomain.Address;
            mRegions.Clear();

            if (addr == 0)
            {
                return(mRegions);
            }

            IModuleData module = mRuntime.GetModuleData(addr);

            if (module != null)
            {
                mType = ClrMemoryRegionType.ModuleThunkHeap;
                mRuntime.TraverseHeap(module.ThunkHeap, mDelegate);

                mType = ClrMemoryRegionType.ModuleLookupTableHeap;
                mRuntime.TraverseHeap(module.LookupTableHeap, mDelegate);
            }

            return(mRegions);
        }
Exemplo n.º 11
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type, uint heap, GCSegmentType seg)
 {
     Address = addr;
     Size = size;
     _runtime = clr;
     Type = type;
     _domainModuleHeap = heap;
     _segmentType = seg;
 }
Exemplo n.º 12
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type)
 {
     Address = addr;
     Size = size;
     _runtime = clr;
     Type = type;
 }
Exemplo n.º 13
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type, ClrAppDomain domain)
 {
     Address = addr;
     Size = size;
     _runtime = clr;
     Type = type;
     _domainModuleHeap = domain.Address;
 }
Exemplo n.º 14
0
        public IEnumerable<MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            mAppDomain = 0;
            mRegions.Clear();

            mType = ClrMemoryRegionType.JitLoaderCodeHeap;
            mRuntime.TraverseHeap(heap, mDelegate);

            return mRegions;
        }
Exemplo n.º 15
0
        public IEnumerable<MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            _appDomain = 0;
            _regions.Clear();

            _type = ClrMemoryRegionType.JitLoaderCodeHeap;
            _runtime.TraverseHeap(heap, _delegate);

            return _regions;
        }