in alloc.go [263:296]
func releaseOverflowPages(
list regionList,
maxPages uint, endMarker PageID,
) (regionList, uint) {
overflowStart, overflowEnd := PageID(maxPages), endMarker
if maxPages == 0 || overflowStart >= overflowEnd {
return list, 0
}
var freed uint
for i := len(list) - 1; i != -1; i-- {
start, end := list[i].Range()
if end < overflowEnd {
break
}
if start < overflowStart {
// split
list[i].count = uint32(overflowStart - start)
freed += uint(end - overflowStart)
overflowEnd = overflowStart
} else {
// remove range
overflowEnd = start
freed += uint(list[i].count)
list = list[:i]
}
}
if len(list) == 0 {
list = nil
}
return list, freed
}