예제 #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;
        }
예제 #2
0
파일: helpers.cs 프로젝트: tylike/clrmd
        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);
        }
예제 #3
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type)
 {
     Address  = addr;
     Size     = size;
     _runtime = clr;
     Type     = type;
 }
예제 #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;
 }
예제 #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;
 }
예제 #6
0
파일: helpers.cs 프로젝트: tylike/clrmd
        public IEnumerable <MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            _appDomain = 0;
            _regions.Clear();

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

            return(_regions);
        }
예제 #7
0
파일: helpers.cs 프로젝트: modulexcite/msos
        public IEnumerable <MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            mAppDomain = 0;
            mRegions.Clear();

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

            return(mRegions);
        }
예제 #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;
        }
예제 #9
0
파일: helpers.cs 프로젝트: zha0/DbgShell
        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;
        }
예제 #10
0
파일: helpers.cs 프로젝트: modulexcite/msos
        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);
        }
예제 #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;
 }
예제 #12
0
 internal MemoryRegion(DesktopRuntimeBase clr, ulong addr, ulong size, ClrMemoryRegionType type)
 {
     Address = addr;
     Size = size;
     _runtime = clr;
     Type = type;
 }
예제 #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;
 }
예제 #14
0
        public IEnumerable<MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            mAppDomain = 0;
            mRegions.Clear();

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

            return mRegions;
        }
예제 #15
0
파일: helpers.cs 프로젝트: JeffCyr/clrmd
        public IEnumerable<MemoryRegion> EnumerateJitHeap(ulong heap)
        {
            _appDomain = 0;
            _regions.Clear();

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

            return _regions;
        }