Пример #1
0
        internal HeapDetails(ref HeapDetails other)
        {
            this = other;

            unchecked
            {
                if (IntPtr.Size == 4)
                {
                    FixupPointer(ref Address);
                    FixupPointer(ref Allocated);
                    FixupPointer(ref MarkArray);
                    FixupPointer(ref CAllocateLH);
                    FixupPointer(ref NextSweepObj);
                    FixupPointer(ref SavedSweepEphemeralSeg);
                    FixupPointer(ref SavedSweepEphemeralStart);
                    FixupPointer(ref BackgroundSavedHighestAddress);
                    FixupPointer(ref BackgroundSavedLowestAddress);

                    FixupPointer(ref EphemeralHeapSegment);
                    FixupPointer(ref LowestAddress);
                    FixupPointer(ref HighestAddress);
                    FixupPointer(ref CardTable);

                    for (int i = 0; i < FinalizationFillPointers.Length; i++)
                    {
                        FixupPointer(ref FinalizationFillPointers[i]);
                    }

                    for (int i = 0; i < GenerationTable.Length; i++)
                    {
                        GenerationTable[i] = new GenerationData(ref GenerationTable[i]);
                    }
                }
            }
        }
Пример #2
0
        internal GenerationData(ref GenerationData other)
        {
            this = other;

            if (IntPtr.Size == 4)
            {
                FixupPointer(ref StartSegment);
                FixupPointer(ref AllocationStart);
                FixupPointer(ref AllocationContextPointer);
                FixupPointer(ref AllocationContextLimit);
            }
        }