mirror of
https://github.com/golang/go
synced 2024-11-17 17:04:47 -07:00
runtime: use divRoundUp
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>
This commit is contained in:
parent
ab5a40c5e3
commit
d965bb6130
@ -1035,9 +1035,9 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
|
|||||||
} else {
|
} else {
|
||||||
var sizeclass uint8
|
var sizeclass uint8
|
||||||
if size <= smallSizeMax-8 {
|
if size <= smallSizeMax-8 {
|
||||||
sizeclass = size_to_class8[(size+smallSizeDiv-1)/smallSizeDiv]
|
sizeclass = size_to_class8[divRoundUp(size, smallSizeDiv)]
|
||||||
} else {
|
} else {
|
||||||
sizeclass = size_to_class128[(size-smallSizeMax+largeSizeDiv-1)/largeSizeDiv]
|
sizeclass = size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]
|
||||||
}
|
}
|
||||||
size = uintptr(class_to_size[sizeclass])
|
size = uintptr(class_to_size[sizeclass])
|
||||||
spc := makeSpanClass(sizeclass, noscan)
|
spc := makeSpanClass(sizeclass, noscan)
|
||||||
|
@ -54,7 +54,7 @@ func gcMarkRootPrepare() {
|
|||||||
|
|
||||||
// Compute how many data and BSS root blocks there are.
|
// Compute how many data and BSS root blocks there are.
|
||||||
nBlocks := func(bytes uintptr) int {
|
nBlocks := func(bytes uintptr) int {
|
||||||
return int((bytes + rootBlockBytes - 1) / rootBlockBytes)
|
return int(divRoundUp(bytes, rootBlockBytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
work.nDataRoots = 0
|
work.nDataRoots = 0
|
||||||
|
@ -144,7 +144,7 @@ func (b *gcSweepBuf) pop() *mspan {
|
|||||||
// intervening pops. Spans that are pushed after the call may also
|
// intervening pops. Spans that are pushed after the call may also
|
||||||
// appear in these blocks.
|
// appear in these blocks.
|
||||||
func (b *gcSweepBuf) numBlocks() int {
|
func (b *gcSweepBuf) numBlocks() int {
|
||||||
return int((atomic.Load(&b.index) + gcSweepBlockEntries - 1) / gcSweepBlockEntries)
|
return int(divRoundUp(uintptr(atomic.Load(&b.index)), gcSweepBlockEntries))
|
||||||
}
|
}
|
||||||
|
|
||||||
// block returns the spans in the i'th block of buffer b. block is
|
// block returns the spans in the i'th block of buffer b. block is
|
||||||
|
@ -13,9 +13,9 @@ package runtime
|
|||||||
func roundupsize(size uintptr) uintptr {
|
func roundupsize(size uintptr) uintptr {
|
||||||
if size < _MaxSmallSize {
|
if size < _MaxSmallSize {
|
||||||
if size <= smallSizeMax-8 {
|
if size <= smallSizeMax-8 {
|
||||||
return uintptr(class_to_size[size_to_class8[(size+smallSizeDiv-1)/smallSizeDiv]])
|
return uintptr(class_to_size[size_to_class8[divRoundUp(size, smallSizeDiv)]])
|
||||||
} else {
|
} else {
|
||||||
return uintptr(class_to_size[size_to_class128[(size-smallSizeMax+largeSizeDiv-1)/largeSizeDiv]])
|
return uintptr(class_to_size[size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if size+_PageSize < size {
|
if size+_PageSize < size {
|
||||||
|
Loading…
Reference in New Issue
Block a user