Commit a89e6be5 authored by Austin Clements's avatar Austin Clements

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 <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarRick Hudson <rlh@golang.org>
parent 14b07dfc
......@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment