示例#1
0
 internal static Array AllocateArray(VTable vtable, int rank,
                                     int totalElements,
                                     Thread currentThread)
 {
     VTable.Deny(Transitions.UnderGCControl(currentThread.threadIndex));
     return(installedGC.AllocateArray(vtable, rank, totalElements,
                                      currentThread));
 }
示例#2
0
 internal static Array AllocateVector(VTable vtable,
                                      int numElements,
                                      Thread currentThread)
 {
     VTable.Deny(Transitions.UnderGCControl(currentThread.threadIndex));
     return(installedGC.AllocateVector(vtable, numElements,
                                       currentThread));
 }
示例#3
0
 internal static Object AllocateObject(VTable vtable,
                                       UIntPtr numBytes,
                                       uint baseAlignment,
                                       Thread currentThread)
 {
     VTable.Deny(Transitions.UnderGCControl(currentThread.threadIndex));
     return(installedGC.AllocateObject(vtable,
                                       numBytes,
                                       baseAlignment,
                                       currentThread));
 }
示例#4
0
        internal unsafe bool GcMark(UIntPtr flag)
        {
            UIntPtr *loc = this.VTableFieldAddr;
            UIntPtr  val = *loc;

            VTable.Deny(val == UIntPtr.Zero);

            if ((val & (UIntPtr)3) != flag)
            {
                *loc = (val & ~(UIntPtr)3) + flag;
                return(true);
            }
            return(false);
        }
示例#5
0
 internal static String AllocateString(int stringLength,
                                       Thread currentThread)
 {
     VTable.Deny(Transitions.UnderGCControl(currentThread.threadIndex));
     return(installedGC.AllocateString(stringLength, currentThread));
 }
示例#6
0
 internal static Object AllocateObject(VTable vtable,
                                       Thread currentThread)
 {
     VTable.Deny(Transitions.UnderGCControl(currentThread.threadIndex));
     return(installedGC.AllocateObject(vtable, currentThread));
 }