diff options
| author | Russ Cox <rsc@golang.org> | 2014-02-13 11:10:31 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2014-02-13 11:10:31 -0500 |
| commit | 86e3cb8da5a22794bbbdf34e934dc180e1c86d01 (patch) | |
| tree | d3a0b21626194ee16c8ec50568040f28c2586566 /src/pkg/runtime/malloc.h | |
| parent | f8e4a2ef94f852c9f112e118f4d266b97839c3c9 (diff) | |
| download | go-86e3cb8da5a22794bbbdf34e934dc180e1c86d01.tar.xz | |
runtime: introduce MSpan.needzero instead of writing to span data
This cleans up the code significantly, and it avoids any
possible problems with madvise zeroing out some but
not all of the data.
Fixes #6400.
LGTM=dave
R=dvyukov, dave
CC=golang-codereviews
https://golang.org/cl/57680046
Diffstat (limited to 'src/pkg/runtime/malloc.h')
| -rw-r--r-- | src/pkg/runtime/malloc.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pkg/runtime/malloc.h b/src/pkg/runtime/malloc.h index ac9e6a2883..de82c551bd 100644 --- a/src/pkg/runtime/malloc.h +++ b/src/pkg/runtime/malloc.h @@ -412,6 +412,7 @@ struct MSpan uint16 ref; // number of allocated objects in this span uint8 sizeclass; // size class uint8 state; // MSpanInUse etc + uint8 needzero; // needs to be zeroed before allocation uintptr elemsize; // computed from sizeclass or from npages int64 unusedsince; // First time spotted by GC in MSpanFree state uintptr npreleased; // number of pages released to the OS @@ -501,7 +502,7 @@ struct MHeap extern MHeap runtime·mheap; void runtime·MHeap_Init(MHeap *h); -MSpan* runtime·MHeap_Alloc(MHeap *h, uintptr npage, int32 sizeclass, bool large, bool zeroed); +MSpan* runtime·MHeap_Alloc(MHeap *h, uintptr npage, int32 sizeclass, bool large, bool needzero); void runtime·MHeap_Free(MHeap *h, MSpan *s, int32 acct); MSpan* runtime·MHeap_Lookup(MHeap *h, void *v); MSpan* runtime·MHeap_LookupMaybe(MHeap *h, void *v); |
