21 #ifndef _cvc3__include__memory_manager_context_h
22 #define _cvc3__include__memory_manager_context_h
64 DebugAssert(d_chunkList.size() > 0,
"expected unempty list");
67 if (s_freePages.empty()) {
68 d_chunkList.push_back((
char*)malloc(chunkSizeBytes));
71 d_chunkList.push_back(s_freePages.back());
72 s_freePages.pop_back();
74 d_nextFree = d_chunkList.back();
84 if (s_freePages.empty()) {
85 d_chunkList.push_back((
char*)malloc(chunkSizeBytes));
88 d_chunkList.push_back(s_freePages.back());
89 s_freePages.pop_back();
91 d_nextFree = d_chunkList.back();
98 while(!d_chunkList.empty()) {
99 s_freePages.push_back(d_chunkList.back());
100 d_chunkList.pop_back();
105 void* res = (
void*)d_nextFree;
107 if (d_nextFree > d_endChunk) {
109 res = (
void*)d_nextFree;
111 DebugAssert(d_nextFree <= d_endChunk,
"chunk not big enough");
119 d_nextFreeStack.push_back(d_nextFree);
120 d_endChunkStack.push_back(d_endChunk);
121 d_indexChunkListStack.push_back(d_indexChunkList);
125 d_nextFree = d_nextFreeStack.back();
126 d_nextFreeStack.pop_back();
127 d_endChunk = d_endChunkStack.back();
128 d_endChunkStack.pop_back();
129 while (d_indexChunkList > d_indexChunkListStack.back()) {
130 s_freePages.push_back(d_chunkList.back());
131 d_chunkList.pop_back();
134 d_indexChunkListStack.pop_back();
138 while (!s_freePages.empty()) {
139 free(s_freePages.back());
140 s_freePages.pop_back();
146 unsigned long mem = 0;
157 return mem + memSelf;
std::vector< char * > d_nextFreeStack
static unsigned getStaticMemory(int verbosity)
#define DebugAssert(cond, str)
std::vector< char * > d_endChunkStack
void * newData(size_t size)
#define FatalAssert(cond, msg)
If something goes horribly wrong, print a message and abort immediately with exit(1).
unsigned d_indexChunkList
unsigned getMemory(int verbosity)
static void print(std::string name, int verbosity, unsigned long memSelf, unsigned long mem)
std::vector< char * > d_chunkList
std::vector< unsigned > d_indexChunkListStack
static std::vector< char * > s_freePages
static void garbageCollect(void)
static unsigned long getVec(int verbosity, const std::vector< T > &v)
const unsigned chunkSizeBytes