X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FArena.c;h=6d7a65b0f3865afa06fa865d1737df846fa929be;hb=661c97c65e5fa47177502e592bb763f752b487ac;hp=76ac23cf88d3e81c65e2208627fefc4c48cb2946;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/rts/Arena.c b/rts/Arena.c index 76ac23c..6d7a65b 100644 --- a/rts/Arena.c +++ b/rts/Arena.c @@ -18,13 +18,12 @@ which most allocations are small. -------------------------------------------------------------------------- */ +#include "PosixSource.h" #include "Rts.h" + #include "RtsUtils.h" -#include "BlockAlloc.h" #include "Arena.h" -#include - // Each arena struct is allocated using malloc(). struct _Arena { bdescr *current; @@ -43,7 +42,7 @@ newArena( void ) 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; @@ -82,11 +81,12 @@ arenaAlloc( Arena *arena, size_t size ) } 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 = NULL; bd->flags = 0; bd->free = bd->start; bd->link = arena->current; @@ -107,7 +107,7 @@ arenaFree( Arena *arena ) next = bd->link; arena_blocks -= bd->blocks; ASSERT(arena_blocks >= 0); - freeGroup(bd); + freeGroup_lock(bd); } stgFree(arena); }