| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include "CmPrerequisitesUtil.h"
- #include "CmMemStack.h"
- namespace CamelotFramework
- {
- MemStackInternal<1024 * 1024> MemStack::mStacks[256];
- #if CM_DEBUG_MODE
- CM_THREAD_ID_TYPE MemStack::mThreadIds[256];
- #endif
- void MemStack::setupHeap(UINT8 heapId)
- {
- assert(heapId < 256);
- mStacks[heapId] = MemStackInternal<1024 * 1024>();
- #if CM_DEBUG_MODE
- mThreadIds[heapId] = CM_THREAD_CURRENT_ID;
- #endif
- }
- UINT8* MemStack::alloc(UINT32 numBytes, UINT32 heapId)
- {
- #if CM_DEBUG_MODE
- assert(mThreadIds[heapId] == CM_THREAD_CURRENT_ID && "Accessing a heap from an invalid thread.");
- #endif
- return mStacks[heapId].alloc(numBytes);
- }
- void MemStack::deallocLast(UINT8* data, UINT32 heapId)
- {
- #if CM_DEBUG_MODE
- assert(mThreadIds[heapId] == CM_THREAD_CURRENT_ID && "Accessing a heap from an invalid thread.");
- #endif
- mStacks[heapId].dealloc(data);
- }
- UINT8* stackAlloc(UINT32 numBytes, UINT32 heapId)
- {
- return MemStack::alloc(numBytes, heapId);
- }
- void stackDeallocLast(void* data, UINT32 heapId)
- {
- return MemStack::deallocLast((UINT8*)data, heapId);
- }
- }
|