func releaseOverflowPages()

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
}