Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
There are a handful of places where the runtime wants to round up the result of a division. We just introduced a helper to do this. This CL replaces all of the hand-coded round-ups (that I could find) with this helper. Change-Id: I465d152157ff0f3cad40c0aa57491e4f2de510ad Reviewed-on: https://go-review.googlesource.com/c/go/+/224385 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
25 lines (22 sloc)
777 Bytes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright 2009 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Malloc small size classes. | |
// | |
// See malloc.go for overview. | |
// See also mksizeclasses.go for how we decide what size classes to use. | |
package runtime | |
// Returns size of the memory block that mallocgc will allocate if you ask for the size. | |
func roundupsize(size uintptr) uintptr { | |
if size < _MaxSmallSize { | |
if size <= smallSizeMax-8 { | |
return uintptr(class_to_size[size_to_class8[divRoundUp(size, smallSizeDiv)]]) | |
} else { | |
return uintptr(class_to_size[size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]]) | |
} | |
} | |
if size+_PageSize < size { | |
return size | |
} | |
return alignUp(size, _PageSize) | |
} |