From: Dmitriy Vyukov Date: Mon, 21 Jul 2014 21:56:01 +0000 (+0400) Subject: runtime: simplify code X-Git-Tag: go1.4beta1~1039 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=92c54e4a73cab47b53472d49479364f1378bbff7;p=gostls13.git runtime: simplify code LGTM=khr R=golang-codereviews, dave, khr CC=golang-codereviews, rsc https://golang.org/cl/116950043 --- diff --git a/src/pkg/runtime/mgc0.c b/src/pkg/runtime/mgc0.c index 2d478acdc4..79eaca61cb 100644 --- a/src/pkg/runtime/mgc0.c +++ b/src/pkg/runtime/mgc0.c @@ -219,10 +219,6 @@ static struct { volatile uint32 ndone; Note alldone; ParFor *markfor; - - Lock; - byte *chunk; - uintptr nchunk; } work; enum { @@ -1310,20 +1306,8 @@ getempty(Workbuf *b) if(b != nil) runtime·lfstackpush(&work.full, &b->node); b = (Workbuf*)runtime·lfstackpop(&work.empty); - if(b == nil) { - // Need to allocate. - runtime·lock(&work); - if(work.nchunk < sizeof *b) { - work.nchunk = 1<<20; - work.chunk = runtime·SysAlloc(work.nchunk, &mstats.gc_sys); - if(work.chunk == nil) - runtime·throw("runtime: cannot allocate memory"); - } - b = (Workbuf*)work.chunk; - work.chunk += sizeof *b; - work.nchunk -= sizeof *b; - runtime·unlock(&work); - } + if(b == nil) + b = runtime·persistentalloc(sizeof(*b), CacheLineSize, &mstats.gc_sys); b->nobj = 0; return b; }