Source file
src/runtime/msize.go
1
2
3
4
5
6
7
8
9
10 package runtime
11
12 import "internal/runtime/gc"
13
14
15
16 func roundupsize(size uintptr, noscan bool) (reqSize uintptr) {
17 reqSize = size
18 if reqSize <= maxSmallSize-gc.MallocHeaderSize {
19
20 if !noscan && reqSize > gc.MinSizeForMallocHeader {
21 reqSize += gc.MallocHeaderSize
22 }
23
24
25 if reqSize <= gc.SmallSizeMax-8 {
26 return uintptr(gc.SizeClassToSize[gc.SizeToSizeClass8[divRoundUp(reqSize, gc.SmallSizeDiv)]]) - (reqSize - size)
27 }
28 return uintptr(gc.SizeClassToSize[gc.SizeToSizeClass128[divRoundUp(reqSize-gc.SmallSizeMax, gc.LargeSizeDiv)]]) - (reqSize - size)
29 }
30
31 reqSize += pageSize - 1
32 if reqSize < size {
33 return size
34 }
35 return reqSize &^ (pageSize - 1)
36 }
37
View as plain text