runtime: remove specialized classes larger than 128 bytes

We've noticed limited benefits (and sometimes worse performance) for the
specialized functions for sizes above around 96-128 bytes. Remove the
larger sizes. (We may want to test moving the boundary even lower in a
future change.) This should also help with the increase in icache misses
that we've been seeing with GOEXPERIMENT=sizespecializedmalloc.

For #79286

Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64_c2s16-perf_vs_parent-sizespecializedmalloc,gotip-linux-amd64_c3h88-perf_vs_parent-sizespecializedmalloc,gotip-linux-arm64_c4ah72-perf_vs_parent-sizespecializedmalloc,gotip-linux-arm64_c4as16-perf_vs_parent-sizespecializedmalloc,gotip-linux-arm64_c4as16-perf_vs_parent,gotip-linux-arm64_c4ah72-perf_vs_parent,gotip-linux-amd64_c3h88-perf_vs_parent,gotip-linux-amd64_c2s16-perf_vs_parent
Change-Id: I63670d0c964957a020ba41b6e2e38e626a6a6964
Reviewed-on: https://go-review.googlesource.com/c/go/+/776740
TryBot-Bypass: Michael Matloob <matloob@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Michael Matloob <matloob@google.com>
This commit is contained in:
Michael Matloob 2026-05-11 09:04:48 -04:00 committed by Michael Matloob
parent 15129eb73b
commit 55089b9e27
7 changed files with 37 additions and 5665 deletions

View file

@ -39,8 +39,8 @@ type symsStruct struct {
InterfaceSwitch *obj.LSym
MallocGC *obj.LSym
MallocGCTiny *obj.LSym
MallocGCSmallNoScan [27]*obj.LSym
MallocGCSmallScanNoHeader [27]*obj.LSym
MallocGCSmallNoScan [11]*obj.LSym
MallocGCSmallScanNoHeader [11]*obj.LSym
Memmove *obj.LSym
Memequal *obj.LSym
Msanread *obj.LSym

View file

@ -806,11 +806,8 @@ func (s *state) specializedMallocSym(size int64, hasPointers bool) *obj.LSym {
if !s.sizeSpecializedMallocEnabled() {
return nil
}
ptrSize := s.config.PtrSize
ptrBits := ptrSize * 8
minSizeForMallocHeader := ptrSize * ptrBits
heapBitsInSpan := size <= minSizeForMallocHeader
if !heapBitsInSpan {
const specializedMallocMax = 128 // This must match the constant in mkmalloc.
if size > specializedMallocMax {
return nil
}
divRoundUp := func(n, a uintptr) uintptr { return (n + a - 1) / a }

View file

@ -22,8 +22,10 @@ const (
maxPtrSize = max(4, 8)
maxPtrBits = 8 * maxPtrSize
// Maximum size smallScanNoHeader would be called for, which is the
// maximum value gc.MinSizeForMallocHeader can have on any platform.
// gc.MinSizeForMallocHeader is defined as goarch.PtrSize * goarch.PtrBits.
smallScanNoHeaderMax = maxPtrSize * maxPtrBits
// Maximum size to generate size specialized functions for.
// We've seen very limited benefit for specialized functions for larger
// size classes, and with the wrapper they are sometimes slower
// than the non-specialized functions.
// This must match the constant in the compiler.
specializedMallocMax = 128
)

View file

@ -25,7 +25,7 @@ var stdout = flag.Bool("stdout", false, "write sizeclasses source to stdout inst
func makeSizeToSizeClass(classes []class) []uint8 {
sc := uint8(0)
ret := make([]uint8, smallScanNoHeaderMax+1)
ret := make([]uint8, benchmarkMax+1)
for i := range ret {
if i > classes[sc].size {
sc++
@ -146,10 +146,10 @@ func smallNoScanSCFuncName(sc, scMax uint8) string {
func specializedMallocConfig(classes []class, sizeToSizeClass []uint8) generatorConfig {
config := generatorConfig{file: "../malloc_stubs.go"}
// Only generate specialized functions for sizes that don't have
// a header on 64-bit platforms. (They may have a header on 32-bit, but
// we will fall back to the non-specialized versions in that case)
scMax := sizeToSizeClass[smallScanNoHeaderMax]
// Only generate specialized functions for sizes up to specializedMallocMax.
// We've noticed limited benefit (or sometimes worse performance) for specialized
// functions for larger sizes, and having too many functions causes icache issues.
scMax := sizeToSizeClass[specializedMallocMax]
str := fmt.Sprint
@ -632,27 +632,27 @@ func replaceWithAssignment(cursor *astutil.Cursor, lhs, rhs []ast.Expr, tok toke
// generateTable generates the file with the jump tables for the specialized malloc functions.
func generateTable(sizeToSizeClass []uint8) []byte {
scMax := sizeToSizeClass[smallScanNoHeaderMax]
scMax := sizeToSizeClass[specializedMallocMax]
var b bytes.Buffer
fmt.Fprintln(&b, `// Code generated by mkmalloc.go; DO NOT EDIT.
fmt.Fprintf(&b, `// Code generated by mkmalloc.go; DO NOT EDIT.
//go:build !plan9
package runtime
import "unsafe"
var mallocScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{`)
var mallocScanTable = [129]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{`)
for i := range uintptr(smallScanNoHeaderMax + 1) {
for i := range uintptr(specializedMallocMax + 1) {
fmt.Fprintf(&b, "%s,\n", smallScanNoHeaderSCFuncName(sizeToSizeClass[i], scMax))
}
fmt.Fprintln(&b, `
}
var mallocNoScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{`)
for i := range uintptr(smallScanNoHeaderMax + 1) {
var mallocNoScanTable = [129]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{`)
for i := range uintptr(specializedMallocMax + 1) {
if i < 16 {
fmt.Fprintf(&b, "%s,\n", "mallocPanic")
} else {
@ -666,14 +666,17 @@ var mallocNoScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsaf
return b.Bytes()
}
// Generate benchmarks for all potentially small sizes
// (sizes for which smallScanNoHeader would be called)
// gc.MinSizeForMallocHeader is defined as goarch.PtrSize * goarch.PtrBits.
const benchmarkMax = maxPtrSize * maxPtrBits
// benchmarkConfig produces an inlining config to stamp out microbenchmarks.
func benchmarkConfig(classes []class, sizeToSizeClass []uint8) generatorConfig {
config := generatorConfig{file: "../malloc_stubs_test.go"}
// Only generate specialized functions for sizes that don't have
// a header on 64-bit platforms. (They may have a header on 32-bit, but
// we will fall back to the non-specialized versions in that case)
scMax := sizeToSizeClass[smallScanNoHeaderMax]
scMax := sizeToSizeClass[benchmarkMax]
str := fmt.Sprint
@ -709,7 +712,7 @@ func benchmarkConfig(classes []class, sizeToSizeClass []uint8) generatorConfig {
}
func generateTopBenchmark(classes []class, sizeToSizeClass []uint8) string {
scMax := sizeToSizeClass[smallScanNoHeaderMax]
scMax := sizeToSizeClass[benchmarkMax]
bench := `func BenchmarkMallocgc(b *testing.B) {
b.Run("scan=noscan", func(b *testing.B) {
`

View file

@ -1076,7 +1076,7 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
return unsafe.Pointer(&zerobase)
}
if sizeSpecializedMallocEnabled && heapBitsInSpan(size) {
if sizeSpecializedMallocEnabled && size < uintptr(len(mallocNoScanTable)) {
if typ == nil || !typ.Pointers() {
if size >= maxTinySize {
return mallocNoScanTable[size](size, typ, needzero)
@ -1120,7 +1120,6 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
var x unsafe.Pointer
var elemsize uintptr
if sizeSpecializedMallocEnabled {
// we know that heapBitsInSpan is false.
if size <= maxSmallSize-gc.MallocHeaderSize {
if typ == nil || !typ.Pointers() {
x, elemsize = mallocgcSmallNoscan(size, typ, needzero)
@ -1128,7 +1127,11 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer {
if !needzero {
throw("objects with pointers must be zeroed")
}
x, elemsize = mallocgcSmallScanHeader(size, typ)
if heapBitsInSpan(size) {
x, elemsize = mallocgcSmallScanNoHeader(size, typ)
} else {
x, elemsize = mallocgcSmallScanHeader(size, typ)
}
}
} else {
x, elemsize = mallocgcLarge(size, typ, needzero)

File diff suppressed because it is too large Load diff

View file

@ -5,8 +5,7 @@ package runtime
import "unsafe"
var mallocScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{
mallocPanic,
var mallocScanTable = [129]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{mallocPanic,
mallocgcSmallScanNoHeaderSC1,
mallocgcSmallScanNoHeaderSC1,
mallocgcSmallScanNoHeaderSC1,
@ -135,393 +134,9 @@ var mallocScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsafe.
mallocgcSmallScanNoHeaderSC10,
mallocgcSmallScanNoHeaderSC10,
mallocgcSmallScanNoHeaderSC10,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC11,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC12,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC13,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC14,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC15,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC16,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC17,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC18,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC19,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC20,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC21,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC22,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC23,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC24,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC25,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
mallocgcSmallScanNoHeaderSC26,
}
var mallocNoScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{
var mallocNoScanTable = [129]func(size uintptr, typ *_type, needzero bool) unsafe.Pointer{
mallocPanic,
mallocPanic,
mallocPanic,
@ -651,388 +266,4 @@ var mallocNoScanTable = [513]func(size uintptr, typ *_type, needzero bool) unsaf
mallocgcSmallNoScanSC10,
mallocgcSmallNoScanSC10,
mallocgcSmallNoScanSC10,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC11,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC12,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC13,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC14,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC15,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC16,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC17,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC18,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC19,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC20,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC21,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC22,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC23,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC24,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC25,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
mallocgcSmallNoScanSC26,
}