Index: src/pkg/runtime/mfixalloc.c |
=================================================================== |
--- a/src/pkg/runtime/mfixalloc.c |
+++ b/src/pkg/runtime/mfixalloc.c |
@@ -24,6 +24,7 @@ |
f->nchunk = 0; |
f->inuse = 0; |
f->sys = 0; |
+ f->cached = 0; |
} |
void* |
@@ -32,6 +33,7 @@ |
void *v; |
if(f->list) { |
+ f->cached--; |
v = f->list; |
f->list = *(void**)f->list; |
f->inuse += f->size; |
@@ -43,7 +45,9 @@ |
if(f->chunk == nil) |
runtime·throw("out of memory (FixAlloc)"); |
f->nchunk = FixAllocChunk; |
+ f->cached += FixAllocChunk / f->size; |
} |
+ f->cached--; |
v = f->chunk; |
if(f->first) |
f->first(f->arg, v); |
@@ -59,5 +63,6 @@ |
f->inuse -= f->size; |
*(void**)p = f->list; |
f->list = p; |
+ f->cached++; |
} |