aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/stack.c')
-rw-r--r--src/pkg/runtime/stack.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/pkg/runtime/stack.c b/src/pkg/runtime/stack.c
index c0b98634d7..c73991470e 100644
--- a/src/pkg/runtime/stack.c
+++ b/src/pkg/runtime/stack.c
@@ -838,15 +838,7 @@ runtime·shrinkstack(G *gp)
// First, we trick malloc into thinking
// we allocated the stack as two separate half-size allocs. Then the
// free() call does the rest of the work for us.
- if(oldsize == PageSize) {
- // convert span of 1 PageSize object to a span of 2
- // PageSize/2 objects.
- span->ref = 2;
- span->sizeclass = runtime·SizeToClass(PageSize/2);
- span->elemsize = PageSize/2;
- } else {
- // convert span of n>1 pages into two spans of n/2 pages each.
- runtime·MHeap_SplitSpan(&runtime·mheap, span);
- }
+ runtime·MSpan_EnsureSwept(span);
+ runtime·MHeap_SplitSpan(&runtime·mheap, span);
runtime·free(oldstk);
}