singrdk/base/Imported/Bartok/runtime/shared/GCs/GenerationalGCData.cs

56 lines
1.9 KiB
C#

namespace System.GCs {
using Microsoft.Bartok.Runtime;
using System.Runtime.CompilerServices;
using System.Threading;
// this class contains all of the things from the generational GC that
// is accessed by the greater runtime in a non-virtual fashion. putting
// it here is necessary to allow devirtualization of critical
// non-generational GC methods.
[NoCCtor]
internal class GenerationalGCData
{
[TrustedNonNull]
internal static RememberedSet installedRemSet;
// PageType.Owner0 is not 0 now. One side effect is that the following arrays
// have unused entries.
internal static short[] gcCountTable;
internal static short[] gcFrequencyTable;
internal static UIntPtr[] gcPromotedTable;
internal static UIntPtr[] gcPromotedLimitTable;
internal static int[] fromSpacePageCounts;
internal static UIntPtr nurserySize;
internal static UIntPtr pretenuredSinceLastFullGC;
internal const PageType nurseryGeneration = PageType.Owner0;
internal const PageType largeObjectGeneration = PageType.Owner1;
internal static PageType defaultGeneration;
internal static PageType MIN_GENERATION {
get { return PageType.Owner0; }
}
internal static PageType MAX_GENERATION {
get { return PageType.Owner1; }
}
// These two arrays contain the range of pages each generation is within
internal static UIntPtr[] MinGenPage;
internal static UIntPtr[] MaxGenPage;
[Inline]
internal static bool IsLargeObjectSize(UIntPtr size) {
UIntPtr largeObjectSize =
(UIntPtr) (1 << Constants.LargeObjectBits);
return size >= largeObjectSize;
}
}
}