104 lines
3.2 KiB
C#
104 lines
3.2 KiB
C#
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
/*******************************************************************/
|
|
/* 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. */
|
|
/*******************************************************************/
|
|
|
|
namespace System.GCs {
|
|
|
|
using System.Threading;
|
|
|
|
internal class NullCollector : BaseCollector {
|
|
|
|
internal override void Collect(Thread currentThread, int generation)
|
|
{
|
|
GC.CollectTransition(currentThread, generation);
|
|
}
|
|
|
|
internal override void CollectStoppable(int currentThreadIndex,
|
|
int generation)
|
|
{
|
|
VTable.NotReached("OutOfMemory: NullCollector: Collect called");
|
|
}
|
|
|
|
internal override void NewThreadNotification(Thread newThread,
|
|
bool initial)
|
|
{
|
|
base.NewThreadNotification(newThread, initial);
|
|
BumpAllocator.NewThreadNotification(newThread, PageType.Owner0);
|
|
}
|
|
|
|
internal override void CheckForNeededGCWork(Thread currentThread) {
|
|
if (NewBytesSinceGCExceeds((UIntPtr) 1500000000)) {
|
|
VTable.NotReached
|
|
("OutOfMemory: NullCollector: Out of original memory quota");
|
|
}
|
|
}
|
|
|
|
internal override int CollectionGeneration(int gen) {
|
|
VTable.NotReached
|
|
("OutOfMemory: NullCollector: CollectionGeneration called");
|
|
return MinGeneration;
|
|
}
|
|
|
|
internal override UIntPtr AllocateObjectMemory(UIntPtr numBytes,
|
|
uint alignment,
|
|
Thread currentThread) {
|
|
return BumpAllocator.Allocate(currentThread, numBytes, alignment);
|
|
}
|
|
|
|
internal override int GetGeneration(Object obj) {
|
|
return MinGeneration;
|
|
}
|
|
|
|
internal override int MaxGeneration {
|
|
get {
|
|
return (int)PageType.Owner0;
|
|
}
|
|
}
|
|
|
|
internal override int MinGeneration {
|
|
get {
|
|
return (int)PageType.Owner0;
|
|
}
|
|
}
|
|
|
|
internal override long TotalMemory {
|
|
get {
|
|
VTable.NotReached
|
|
("OutOfMemory: NullCollector: TotalMemory called");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
internal override void EnableHeap() {
|
|
}
|
|
|
|
internal override void VerifyHeap(bool beforeCollection) {
|
|
}
|
|
|
|
internal override UIntPtr FindObjectAddr(UIntPtr interiorPtr) {
|
|
VTable.NotReached
|
|
("OutOfMemory: NullCollector: FindObjectAddr called");
|
|
return UIntPtr.Zero;
|
|
}
|
|
|
|
internal override void VisitObjects
|
|
(ObjectLayout.ObjectVisitor objectVisitor,
|
|
UIntPtr lowAddr,
|
|
UIntPtr highAddr) {
|
|
}
|
|
|
|
internal override bool IsOnTheFlyCollector {
|
|
get {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|