X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=libgo%2Fruntime%2Fmfixalloc.c;h=9d0b3bbda7e8f9c7adfe43681464c513d42d2fdb;hb=b379f8d81f6141336c8585b19f9703bc26b99e2a;hp=6e4f0c6e6071376f4ee66f1590029194bb2a7254;hpb=be47d6eceffd2c5dbbc1566d5eea490527fb2bd4;p=gcc.git diff --git a/libgo/runtime/mfixalloc.c b/libgo/runtime/mfixalloc.c index 6e4f0c6e607..9d0b3bbda7e 100644 --- a/libgo/runtime/mfixalloc.c +++ b/libgo/runtime/mfixalloc.c @@ -13,17 +13,16 @@ // Initialize f to allocate objects of the given size, // using the allocator to obtain chunks of memory. void -runtime_FixAlloc_Init(FixAlloc *f, uintptr size, void *(*alloc)(uintptr), void (*first)(void*, byte*), void *arg) +runtime_FixAlloc_Init(FixAlloc *f, uintptr size, void (*first)(void*, byte*), void *arg, uint64 *stat) { f->size = size; - f->alloc = alloc; f->first = first; f->arg = arg; f->list = nil; f->chunk = nil; f->nchunk = 0; f->inuse = 0; - f->sys = 0; + f->stat = stat; } void* @@ -43,10 +42,7 @@ runtime_FixAlloc_Alloc(FixAlloc *f) return v; } if(f->nchunk < f->size) { - f->sys += FixAllocChunk; - f->chunk = f->alloc(FixAllocChunk); - if(f->chunk == nil) - runtime_throw("out of memory (FixAlloc)"); + f->chunk = runtime_persistentalloc(FixAllocChunk, 0, f->stat); f->nchunk = FixAllocChunk; } v = f->chunk;