コード例 #1
0
        internal static void Initialize(int count, UIntPtr size)
        {
            writeBufferSize = ((int)size * count) / UIntPtr.Size;
            chunkSize       = (int)size;
            UIntPtr memorySize = (UIntPtr)UIntPtr.Size * (uint)writeBufferSize;

            writeBuffer = (UIntPtr *)
                          PageManager.AllocateNonheapMemory(null, memorySize);
            VTable.Assert(writeBuffer != null);
            AdjustChunkSize(1);
            SequentialStoreBuffer.instance = (SequentialStoreBuffer)
                                             BootstrapMemory.Allocate(typeof(SequentialStoreBuffer));
        }
コード例 #2
0
        private static void InstallRemSet()
        {
            switch (GC.remsetType)
            {
            case RemSetType.SSB: {
                SequentialStoreBuffer.Initialize();
                installedRemSet = SequentialStoreBuffer.instance;
                break;
            }

            case RemSetType.Cards: {
                CardTable.Initialize();
                installedRemSet = CardTable.instance;
                break;
            }

            default: {
                VTable.NotReached("Unsupported remembered set: " +
                                  GC.remsetType);
                break;
            }
            }
        }