From a89e6be5e409960da744626c27e24c130aa6e076 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Fri, 30 Jun 2017 16:51:07 -0400 Subject: [PATCH] runtime: clean up mheap.allocLarge mheap.allocLarge just calls bestFitTreap and is the only caller of bestFitTreap. Flatten these into a single function. Also fix their comments: allocLarge claims to return exactly npages but can in fact return a larger span, and h.freelarge is not in fact indexed by span start address. Change-Id: Ia20112bdc46643a501ea82ea77c58596bc96f125 Reviewed-on: https://go-review.googlesource.com/47315 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson --- src/runtime/mheap.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index 60676aba3e..bf682ec97f 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -857,16 +857,11 @@ func (h *mheap) isLargeSpan(npages uintptr) bool { return npages >= uintptr(len(h.free)) } -// Allocate a span of exactly npage pages from the treap of large spans. +// allocLarge allocates a span of at least npage pages from the treap of large spans. +// Returns nil if no such span currently exists. func (h *mheap) allocLarge(npage uintptr) *mspan { - return bestFitTreap(&h.freelarge, npage) -} - -// Search treap for smallest span with >= npage pages. -// If there are multiple smallest spans, select the one -// with the earliest starting address. -func bestFitTreap(treap *mTreap, npage uintptr) *mspan { - return treap.remove(npage) + // Search treap for smallest span with >= npage pages. + return h.freelarge.remove(npage) } // Try to add at least npage pages of memory to the heap, -- 2.50.0