diff options
| author | Keith Randall <khr@golang.org> | 2014-06-30 18:59:24 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2014-06-30 18:59:24 -0700 |
| commit | 7c13860cd08352e785002cb97bd3baafd370e8bc (patch) | |
| tree | 326e70940dba8dfd140cc67d69461d3e9ef488e6 /src/pkg/runtime/mcentral.c | |
| parent | 54951023cb0a1743f7f3cb233ff424593bf1a131 (diff) | |
| download | go-7c13860cd08352e785002cb97bd3baafd370e8bc.tar.xz | |
runtime: stack allocator, separate from mallocgc
In order to move malloc to Go, we need to have a
separate stack allocator. If we run out of stack
during malloc, malloc will not be available
to allocate a new stack.
Stacks are the last remaining FlagNoGC objects in the
GC heap. Once they are out, we can get rid of the
distinction between the allocated/blockboundary bits.
(This will be in a separate change.)
Fixes #7468
Fixes #7424
LGTM=rsc, dvyukov
R=golang-codereviews, dvyukov, khr, dave, rsc
CC=golang-codereviews
https://golang.org/cl/104200047
Diffstat (limited to 'src/pkg/runtime/mcentral.c')
| -rw-r--r-- | src/pkg/runtime/mcentral.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/pkg/runtime/mcentral.c b/src/pkg/runtime/mcentral.c index 203558fca5..9291c24856 100644 --- a/src/pkg/runtime/mcentral.c +++ b/src/pkg/runtime/mcentral.c @@ -263,6 +263,8 @@ MCentral_Grow(MCentral *c) runtime·unlock(c); runtime·MGetSizeClassInfo(c->sizeclass, &size, &npages, &n); s = runtime·MHeap_Alloc(&runtime·mheap, npages, c->sizeclass, 0, 1); + if(s->next != nil || s->prev != nil) + runtime·throw("internal error: MSpan should not be in a list"); if(s == nil) { // TODO(rsc): Log out of memory runtime·lock(c); |
