70 lines
3.4 KiB
C#
70 lines
3.4 KiB
C#
|
/*******************************************************************/
|
||
|
/* WARNING */
|
||
|
/* This file should be identical in the Bartok and Singularity */
|
||
|
/* depots. Master copy resides in Bartok Depot. Changes should be */
|
||
|
/* made to Bartok Depot and propagated to Singularity Depot. */
|
||
|
/*******************************************************************/
|
||
|
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
|
||
|
namespace System.GCs
|
||
|
{
|
||
|
|
||
|
using Microsoft.Bartok.Runtime;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
using System.Threading;
|
||
|
|
||
|
[NoCCtor]
|
||
|
[RequiredByBartok]
|
||
|
internal abstract class Collector
|
||
|
{
|
||
|
// Helper methods for GC.cs
|
||
|
internal abstract void Collect(int currentThreadIndex,
|
||
|
int generation);
|
||
|
internal abstract void CheckForNeededGCWork(Thread currentThread);
|
||
|
internal abstract int CollectionGeneration(int gen);
|
||
|
internal abstract int GetGeneration(Object obj);
|
||
|
internal abstract int MaxGeneration { get; }
|
||
|
internal abstract int MinGeneration { get; }
|
||
|
internal abstract long TotalMemory { get; }
|
||
|
// Creation and destruction of heaps
|
||
|
internal abstract void EnableHeap();
|
||
|
internal abstract void DestructHeap();
|
||
|
// Verification of the heap
|
||
|
internal abstract void VerifyHeap(bool beforeCollection);
|
||
|
// Object visitation methods
|
||
|
internal abstract UIntPtr FindObjectAddr(UIntPtr interiorPtr);
|
||
|
internal abstract void VisitObjects(ObjectLayout.ObjectVisitor objectVisitor,
|
||
|
UIntPtr lowAddr,
|
||
|
UIntPtr highAddr);
|
||
|
// Transition methods
|
||
|
internal abstract void NewThreadNotification(Thread newThread,
|
||
|
bool initial);
|
||
|
internal abstract void DeadThreadNotification(Thread deadThread);
|
||
|
internal abstract void ThreadStartNotification(int currentThreadIndex);
|
||
|
internal abstract void ThreadEndNotification(Thread currentThread);
|
||
|
internal abstract void ThreadDormantGCNotification(int threadIndex);
|
||
|
internal abstract bool IsOnTheFlyCollector {get;}
|
||
|
// Profiling methods.
|
||
|
internal virtual void SetProfiler(GCProfiler profiler) { }
|
||
|
internal virtual void ProfileAllocation(Object obj) { }
|
||
|
// Allocation of objects
|
||
|
internal abstract UIntPtr AllocateObjectMemory(UIntPtr numBytes,
|
||
|
uint alignment,
|
||
|
Thread currentThread);
|
||
|
internal abstract Object AllocateObject(VTable vtable,
|
||
|
Thread currentThread);
|
||
|
internal abstract Array AllocateVector(VTable vtable,
|
||
|
int numElements,
|
||
|
Thread currentThread);
|
||
|
internal abstract Array AllocateArray(VTable vtable,
|
||
|
int rank, int totalElements,
|
||
|
Thread currentThread);
|
||
|
internal abstract String AllocateString(int stringLength,
|
||
|
Thread currentThread);
|
||
|
}
|
||
|
|
||
|
}
|