aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/malloc.go
diff options
context:
space:
mode:
authorMichael Anthony Knyszek <mknyszek@google.com>2025-03-04 19:02:48 +0000
committerGopher Robot <gobot@golang.org>2025-04-23 08:00:33 -0700
commit528bafa0498bb26a3b3961fa5bf50d02bd7101bb (patch)
treeeb72406f4a0ce690d368b2377e2df031457775ca /src/runtime/malloc.go
parentecdd429a3be7abde6e169b79da13bffdba064cb4 (diff)
downloadgo-528bafa0498bb26a3b3961fa5bf50d02bd7101bb.tar.xz
runtime: move sizeclass defs to new package internal/runtime/gc
We will want to reference these definitions from new generator programs, and this is a good opportunity to cleanup all these old C-style names. Change-Id: Ifb06f0afc381e2697e7877f038eca786610c96de Reviewed-on: https://go-review.googlesource.com/c/go/+/655275 Auto-Submit: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Pratt <mpratt@google.com>
Diffstat (limited to 'src/runtime/malloc.go')
-rw-r--r--src/runtime/malloc.go42
1 files changed, 20 insertions, 22 deletions
diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go
index 0a48f8bc61..554cfa6fcf 100644
--- a/src/runtime/malloc.go
+++ b/src/runtime/malloc.go
@@ -104,6 +104,7 @@ import (
"internal/goarch"
"internal/goos"
"internal/runtime/atomic"
+ "internal/runtime/gc"
"internal/runtime/math"
"internal/runtime/sys"
"unsafe"
@@ -112,13 +113,10 @@ import (
const (
maxTinySize = _TinySize
tinySizeClass = _TinySizeClass
- maxSmallSize = _MaxSmallSize
-
- pageShift = _PageShift
- pageSize = _PageSize
-
- _PageSize = 1 << _PageShift
- _PageMask = _PageSize - 1
+ maxSmallSize = gc.MaxSmallSize
+ pageSize = 1 << gc.PageShift
+ pageMask = pageSize - 1
+ _PageSize = pageSize // Unused. Left for viewcore.
// _64bit = 1 on 64-bit systems, 0 on 32-bit systems
_64bit = 1 << (^uintptr(0) >> 63) / 2
@@ -371,7 +369,7 @@ var (
)
func mallocinit() {
- if class_to_size[_TinySizeClass] != _TinySize {
+ if gc.SizeClassToSize[tinySizeClass] != maxTinySize {
throw("bad TinySizeClass")
}
@@ -432,11 +430,11 @@ func mallocinit() {
// span sizes are one page. Some code relies on this.
minSizeForMallocHeaderIsSizeClass := false
sizeClassesUpToMinSizeForMallocHeaderAreOnePage := true
- for i := 0; i < len(class_to_size); i++ {
- if class_to_allocnpages[i] > 1 {
+ for i := 0; i < len(gc.SizeClassToSize); i++ {
+ if gc.SizeClassToNPages[i] > 1 {
sizeClassesUpToMinSizeForMallocHeaderAreOnePage = false
}
- if minSizeForMallocHeader == uintptr(class_to_size[i]) {
+ if minSizeForMallocHeader == uintptr(gc.SizeClassToSize[i]) {
minSizeForMallocHeaderIsSizeClass = true
break
}
@@ -1272,12 +1270,12 @@ func mallocgcSmallNoscan(size uintptr, typ *_type, needzero bool) (unsafe.Pointe
checkGCTrigger := false
c := getMCache(mp)
var sizeclass uint8
- if size <= smallSizeMax-8 {
- sizeclass = size_to_class8[divRoundUp(size, smallSizeDiv)]
+ if size <= gc.SmallSizeMax-8 {
+ sizeclass = gc.SizeToSizeClass8[divRoundUp(size, gc.SmallSizeDiv)]
} else {
- sizeclass = size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]
+ sizeclass = gc.SizeToSizeClass128[divRoundUp(size-gc.SmallSizeMax, gc.LargeSizeDiv)]
}
- size = uintptr(class_to_size[sizeclass])
+ size = uintptr(gc.SizeClassToSize[sizeclass])
spc := makeSpanClass(sizeclass, true)
span := c.alloc[spc]
v := nextFreeFast(span)
@@ -1360,7 +1358,7 @@ func mallocgcSmallScanNoHeader(size uintptr, typ *_type) (unsafe.Pointer, uintpt
checkGCTrigger := false
c := getMCache(mp)
- sizeclass := size_to_class8[divRoundUp(size, smallSizeDiv)]
+ sizeclass := gc.SizeToSizeClass8[divRoundUp(size, gc.SmallSizeDiv)]
spc := makeSpanClass(sizeclass, false)
span := c.alloc[spc]
v := nextFreeFast(span)
@@ -1378,7 +1376,7 @@ func mallocgcSmallScanNoHeader(size uintptr, typ *_type) (unsafe.Pointer, uintpt
} else {
c.scanAlloc += heapSetTypeNoHeader(uintptr(x), size, typ, span)
}
- size = uintptr(class_to_size[sizeclass])
+ size = uintptr(gc.SizeClassToSize[sizeclass])
// Ensure that the stores above that initialize x to
// type-safe memory and set the heap bits occur before
@@ -1453,12 +1451,12 @@ func mallocgcSmallScanHeader(size uintptr, typ *_type) (unsafe.Pointer, uintptr)
c := getMCache(mp)
size += mallocHeaderSize
var sizeclass uint8
- if size <= smallSizeMax-8 {
- sizeclass = size_to_class8[divRoundUp(size, smallSizeDiv)]
+ if size <= gc.SmallSizeMax-8 {
+ sizeclass = gc.SizeToSizeClass8[divRoundUp(size, gc.SmallSizeDiv)]
} else {
- sizeclass = size_to_class128[divRoundUp(size-smallSizeMax, largeSizeDiv)]
+ sizeclass = gc.SizeToSizeClass128[divRoundUp(size-gc.SmallSizeMax, gc.LargeSizeDiv)]
}
- size = uintptr(class_to_size[sizeclass])
+ size = uintptr(gc.SizeClassToSize[sizeclass])
spc := makeSpanClass(sizeclass, false)
span := c.alloc[spc]
v := nextFreeFast(span)
@@ -1909,7 +1907,7 @@ func persistentalloc1(size, align uintptr, sysStat *sysMemStat) *notInHeap {
if align&(align-1) != 0 {
throw("persistentalloc: align is not a power of 2")
}
- if align > _PageSize {
+ if align > pageSize {
throw("persistentalloc: align is too large")
}
} else {