which most allocations are small.
-------------------------------------------------------------------------- */
+#include "PosixSource.h"
#include "Rts.h"
+
#include "RtsUtils.h"
-#include "BlockAlloc.h"
#include "Arena.h"
-#include <stdlib.h>
-
// Each arena struct is allocated using malloc().
struct _Arena {
bdescr *current;
Arena *arena;
arena = stgMallocBytes(sizeof(Arena), "newArena");
- arena->current = allocBlock();
+ arena->current = allocBlock_lock();
arena->current->link = NULL;
arena->free = arena->current->start;
arena->lim = arena->current->start + BLOCK_SIZE_W;
} else {
// allocate a fresh block...
req_blocks = (lnat)BLOCK_ROUND_UP(size) / BLOCK_SIZE;
- bd = allocGroup(req_blocks);
+ bd = allocGroup_lock(req_blocks);
arena_blocks += req_blocks;
bd->gen_no = 0;
- bd->step = NULL;
+ bd->gen = NULL;
+ bd->dest_no = 0;
bd->flags = 0;
bd->free = bd->start;
bd->link = arena->current;
next = bd->link;
arena_blocks -= bd->blocks;
ASSERT(arena_blocks >= 0);
- freeGroup(bd);
+ freeGroup_lock(bd);
}
stgFree(arena);
}