aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2020-03-20 11:37:54 -0400
committerAustin Clements <austin@google.com>2020-03-20 16:05:35 +0000
commitd965bb613086cd780cf73418bcdeaef50a9afc55 (patch)
treed57632acdcb73de11dafae0b3db55d58fd9cb2ae /src
parentab5a40c5e3162a565b26de4b1e7595f7922ba761 (diff)
downloadgo-d965bb613086cd780cf73418bcdeaef50a9afc55.tar.xz
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>
Diffstat (limited to 'src')
-rw-r--r--src/runtime/malloc.go4
-rw-r--r--src/runtime/mgcmark.go2
-rw-r--r--src/runtime/mgcsweepbuf.go2
-rw-r--r--src/runtime/msize.go4
4 files changed, 6 insertions, 6 deletions
diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go
index 483ea0aee5..346d7f4742 100644
--- a/src/runtime/malloc.go
+++ b/src/runtime/malloc.go
@@ -1035,9 +1035,9 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
} else {
var sizeclass uint8
if size <= smallSizeMax-8 {
- sizeclass = size_to_class8[(size+smallSizeDiv-1)/smallSizeDiv]
+ sizeclass = size_to_class8[divRoundUp(size, smallSizeDiv)]
} else {
- sizeclass = size_to_class128[(size-smallSizeMax+largeSizeDiv-1)/largeSizeDiv]
+ sizeclass = size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]
}
size = uintptr(class_to_size[sizeclass])
spc := makeSpanClass(sizeclass, noscan)
diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go
index 2c17d8befa..301d8020f1 100644
--- a/src/runtime/mgcmark.go
+++ b/src/runtime/mgcmark.go
@@ -54,7 +54,7 @@ func gcMarkRootPrepare() {
// Compute how many data and BSS root blocks there are.
nBlocks := func(bytes uintptr) int {
- return int((bytes + rootBlockBytes - 1) / rootBlockBytes)
+ return int(divRoundUp(bytes, rootBlockBytes))
}
work.nDataRoots = 0
diff --git a/src/runtime/mgcsweepbuf.go b/src/runtime/mgcsweepbuf.go
index 78288229c8..1f722c3d58 100644
--- a/src/runtime/mgcsweepbuf.go
+++ b/src/runtime/mgcsweepbuf.go
@@ -144,7 +144,7 @@ func (b *gcSweepBuf) pop() *mspan {
// intervening pops. Spans that are pushed after the call may also
// appear in these blocks.
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
diff --git a/src/runtime/msize.go b/src/runtime/msize.go
index 11d06ce025..c56aa5a7b2 100644
--- a/src/runtime/msize.go
+++ b/src/runtime/msize.go
@@ -13,9 +13,9 @@ package runtime
func roundupsize(size uintptr) uintptr {
if size < _MaxSmallSize {
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 {
- 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 {