From 528bafa0498bb26a3b3961fa5bf50d02bd7101bb Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Tue, 4 Mar 2025 19:02:48 +0000 Subject: 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 LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui Reviewed-by: Michael Pratt --- src/runtime/malloc.go | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'src/runtime/malloc.go') 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 { -- cgit v1.3