コード例 #1
0
ファイル: Heap.cs プロジェクト: gecambridge/Cosmos
 static public byte *Alloc(Native aSize)
 {
     if (aSize <= HeapSmall.mMaxItemSize)
     {
         return(HeapSmall.Alloc(aSize));
     }
     else if (aSize <= HeapMedium.MaxItemSize)
     {
         return(HeapMedium.Alloc(aSize));
     }
     else
     {
         return(HeapLarge.Alloc(aSize));
     }
 }
コード例 #2
0
ファイル: Heap.cs プロジェクト: gecambridge/Cosmos
        // Keep as void* and not byte* or other. Reduces typecasting from callers
        // who may have typed the pointer to their own needs.
        static public void Free(void *aPtr)
        {
            //TODO find a better way to remove the double look up here for GetPageType and then again in the
            // .Free methods which actually free the entries in the RAT.
            var xType = RAT.GetPageType(aPtr);

            switch (xType)
            {
            case RAT.PageType.HeapLarge:
                HeapLarge.Free(aPtr);
                break;

            default:
                throw new Exception("Heap item not found in RAT.");
            }
        }
コード例 #3
0
ファイル: Heap.cs プロジェクト: gecambridge/Cosmos
 static public void Init()
 {
     HeapSmall.Init();
     HeapMedium.Init();
     HeapLarge.Init();
 }
コード例 #4
0
 static public void Free(void *aPtr)
 {
     HeapLarge.Free(aPtr);
 }
コード例 #5
0
 static public byte *Alloc(Native aSize)
 {
     return(HeapLarge.Alloc(aSize));
 }