From 4adaef4e7ac16d472b479e2f5f05369a87dcb3ce Mon Sep 17 00:00:00 2001 From: cyf <16268620+cyf12123@user.noreply.gitee.com> Date: Fri, 17 Oct 2025 15:00:58 +0800 Subject: [PATCH 1/5] PageShift14 enables 16K page size. --- src/internal/goexperiment/flags.go | 3 + src/runtime/sizeclasses.go | 5 +- src/runtime/sizeclasses_14.go | 103 +++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 src/runtime/sizeclasses_14.go diff --git a/src/internal/goexperiment/flags.go b/src/internal/goexperiment/flags.go index ac85fc800..6934f123c 100644 --- a/src/internal/goexperiment/flags.go +++ b/src/internal/goexperiment/flags.go @@ -131,4 +131,7 @@ type Flags struct { // Kunpeng malloc prefetch optimization. PrefetchMalloc bool + + //PageShift14 enables 16K page size. + PageShift14 bool } diff --git a/src/runtime/sizeclasses.go b/src/runtime/sizeclasses.go index bbcaa9e98..d8518f517 100644 --- a/src/runtime/sizeclasses.go +++ b/src/runtime/sizeclasses.go @@ -1,5 +1,6 @@ // Code generated by mksizeclasses.go; DO NOT EDIT. //go:generate go run mksizeclasses.go +//go:build !goexperiment.pageshift14 package runtime @@ -77,9 +78,9 @@ package runtime // 16 4 32 // 32 5 256 // 64 6 512 -// 128 7 768 +// 128 7 1024 // 4096 12 28672 -// 8192 13 32768 +// 16384 14 32768 const ( minHeapAlign = 8 diff --git a/src/runtime/sizeclasses_14.go b/src/runtime/sizeclasses_14.go new file mode 100644 index 000000000..c6c36cca0 --- /dev/null +++ b/src/runtime/sizeclasses_14.go @@ -0,0 +1,103 @@ +// Code generated by mksizeclasses.go; DO NOT EDIT. +//go:generate go run mksizeclasses.go +//go:build goexperiment.pageshift14 + +package runtime + +// class bytes/obj bytes/span objects tail waste max waste min align +// 1 8 16384 2048 0 87.50% 8 +// 2 16 16384 1024 0 43.75% 16 +// 3 24 16384 682 16 29.24% 8 +// 4 32 16384 512 0 21.88% 32 +// 5 48 16384 341 16 31.32% 16 +// 6 64 16384 256 0 23.44% 64 +// 7 80 16384 204 64 19.07% 16 +// 8 96 16384 170 64 15.95% 32 +// 9 112 16384 146 32 13.56% 16 +// 10 128 16384 128 0 11.72% 128 +// 11 144 16384 113 112 11.03% 16 +// 12 160 16384 102 64 9.73% 32 +// 13 176 16384 93 16 8.61% 16 +// 14 192 16384 85 64 8.17% 64 +// 15 208 16384 78 160 8.12% 16 +// 16 224 16384 73 32 6.88% 32 +// 17 240 16384 68 64 6.62% 16 +// 18 256 16384 64 0 5.86% 256 +// 19 288 16384 56 256 12.16% 32 +// 20 320 16384 51 64 10.04% 64 +// 21 352 16384 46 192 9.88% 32 +// 22 384 16384 42 256 9.51% 128 +// 23 416 16384 39 160 8.36% 32 +// 24 448 16384 36 256 8.37% 64 +// 25 480 16384 34 64 6.82% 32 +// 26 512 16384 32 0 6.05% 512 +// 27 576 16384 28 256 12.33% 64 +// 28 640 16384 25 384 11.96% 128 +// 29 704 16384 23 192 10.02% 64 +// 30 768 16384 21 256 9.64% 256 +// 31 832 16384 19 576 10.82% 64 +// 32 896 16384 18 256 8.48% 128 +// 33 960 16384 17 64 6.93% 64 +// 34 1024 16384 16 0 6.15% 1024 +// 35 1152 16384 14 256 12.41% 128 +// 36 1280 16384 12 1024 15.55% 256 +// 37 1408 16384 11 896 14.00% 128 +// 38 1536 16384 10 1024 14.00% 512 +// 39 1792 16384 9 256 15.57% 256 +// 40 2048 16384 8 0 12.45% 2048 +// 41 2304 16384 7 256 12.46% 256 +// 42 2688 16384 6 256 15.59% 128 +// 43 2944 32768 11 384 9.73% 128 +// 44 3200 16384 5 384 10.13% 128 +// 45 3584 32768 9 512 12.08% 512 +// 46 4096 16384 4 0 12.48% 4096 +// 47 4608 32768 7 512 12.48% 512 +// 48 5376 16384 3 256 15.61% 256 +// 49 6144 49152 8 0 12.48% 2048 +// 50 6528 32768 5 128 6.23% 128 +// 51 6912 49152 7 768 7.02% 256 +// 52 8192 16384 2 0 15.61% 8192 +// 53 9344 65536 7 128 12.49% 128 +// 54 9728 49152 5 512 4.94% 512 +// 55 10880 32768 3 128 10.93% 128 +// 56 12288 49152 4 0 11.45% 4096 +// 57 13056 65536 5 256 6.24% 256 +// 58 13568 81920 6 512 4.37% 256 +// 59 13952 98304 7 640 3.38% 128 +// 60 14336 114688 8 0 2.67% 2048 +// 61 16384 16384 1 0 12.49% 16384 +// 62 18688 131072 7 256 12.49% 256 +// 63 19072 114688 6 256 2.23% 128 +// 64 19584 98304 5 384 2.99% 128 +// 65 20480 81920 4 0 4.37% 4096 +// 66 21760 65536 3 256 6.25% 256 +// 67 24576 49152 2 0 11.45% 8192 +// 68 27264 81920 3 128 10.00% 128 +// 69 28672 114688 4 0 4.91% 4096 +// 70 32768 32768 1 0 12.50% 16384 + +// alignment bits min obj size +// 8 3 8 +// 16 4 32 +// 32 5 256 +// 64 6 512 +// 128 7 1024 +// 4096 12 28672 +// 16384 14 32768 + +const ( + minHeapAlign = 8 + _MaxSmallSize = 32768 + smallSizeDiv = 8 + smallSizeMax = 1024 + largeSizeDiv = 128 + _NumSizeClasses = 71 + _PageShift = 14 + maxObjsPerSpan = 2048 +) + +var class_to_size = [_NumSizeClasses]uint16{0, 8, 16, 24, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 1152, 1280, 1408, 1536, 1792, 2048, 2304, 2688, 2944, 3200, 3584, 4096, 4608, 5376, 6144, 6528, 6912, 8192, 9344, 9728, 10880, 12288, 13056, 13568, 13952, 14336, 16384, 18688, 19072, 19584, 20480, 21760, 24576, 27264, 28672, 32768} +var class_to_allocnpages = [_NumSizeClasses]uint8{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 2, 3, 1, 4, 3, 2, 3, 4, 5, 6, 7, 1, 8, 7, 6, 5, 4, 3, 5, 7, 2} +var class_to_divmagic = [_NumSizeClasses]uint32{0, ^uint32(0)/8 + 1, ^uint32(0)/16 + 1, ^uint32(0)/24 + 1, ^uint32(0)/32 + 1, ^uint32(0)/48 + 1, ^uint32(0)/64 + 1, ^uint32(0)/80 + 1, ^uint32(0)/96 + 1, ^uint32(0)/112 + 1, ^uint32(0)/128 + 1, ^uint32(0)/144 + 1, ^uint32(0)/160 + 1, ^uint32(0)/176 + 1, ^uint32(0)/192 + 1, ^uint32(0)/208 + 1, ^uint32(0)/224 + 1, ^uint32(0)/240 + 1, ^uint32(0)/256 + 1, ^uint32(0)/288 + 1, ^uint32(0)/320 + 1, ^uint32(0)/352 + 1, ^uint32(0)/384 + 1, ^uint32(0)/416 + 1, ^uint32(0)/448 + 1, ^uint32(0)/480 + 1, ^uint32(0)/512 + 1, ^uint32(0)/576 + 1, ^uint32(0)/640 + 1, ^uint32(0)/704 + 1, ^uint32(0)/768 + 1, ^uint32(0)/832 + 1, ^uint32(0)/896 + 1, ^uint32(0)/960 + 1, ^uint32(0)/1024 + 1, ^uint32(0)/1152 + 1, ^uint32(0)/1280 + 1, ^uint32(0)/1408 + 1, ^uint32(0)/1536 + 1, ^uint32(0)/1792 + 1, ^uint32(0)/2048 + 1, ^uint32(0)/2304 + 1, ^uint32(0)/2688 + 1, ^uint32(0)/2944 + 1, ^uint32(0)/3200 + 1, ^uint32(0)/3584 + 1, ^uint32(0)/4096 + 1, ^uint32(0)/4608 + 1, ^uint32(0)/5376 + 1, ^uint32(0)/6144 + 1, ^uint32(0)/6528 + 1, ^uint32(0)/6912 + 1, ^uint32(0)/8192 + 1, ^uint32(0)/9344 + 1, ^uint32(0)/9728 + 1, ^uint32(0)/10880 + 1, ^uint32(0)/12288 + 1, ^uint32(0)/13056 + 1, ^uint32(0)/13568 + 1, ^uint32(0)/13952 + 1, ^uint32(0)/14336 + 1, ^uint32(0)/16384 + 1, ^uint32(0)/18688 + 1, ^uint32(0)/19072 + 1, ^uint32(0)/19584 + 1, ^uint32(0)/20480 + 1, ^uint32(0)/21760 + 1, ^uint32(0)/24576 + 1, ^uint32(0)/27264 + 1, ^uint32(0)/28672 + 1, ^uint32(0)/32768 + 1} +var size_to_class8 = [smallSizeMax/smallSizeDiv + 1]uint8{0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34} +var size_to_class128 = [(_MaxSmallSize-smallSizeMax)/largeSizeDiv + 1]uint8{34, 35, 36, 37, 38, 39, 39, 40, 40, 41, 41, 42, 42, 42, 43, 43, 44, 44, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70} -- Gitee From 715d37f41d07512ccec7a90ccba0b1ac8672d9ae Mon Sep 17 00:00:00 2001 From: cyf <16268620+cyf12123@user.noreply.gitee.com> Date: Fri, 17 Oct 2025 15:00:58 +0800 Subject: [PATCH 2/5] PageShift14 enables 16K page size. --- src/runtime/sizeclasses.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runtime/sizeclasses.go b/src/runtime/sizeclasses.go index bbcaa9e98..6c78a6584 100644 --- a/src/runtime/sizeclasses.go +++ b/src/runtime/sizeclasses.go @@ -77,9 +77,9 @@ package runtime // 16 4 32 // 32 5 256 // 64 6 512 -// 128 7 768 +// 128 7 1024 // 4096 12 28672 -// 8192 13 32768 +// 16384 14 32768 const ( minHeapAlign = 8 -- Gitee From ef2a4d5eecb98fbe20b4012efa11e7d2873c9fc1 Mon Sep 17 00:00:00 2001 From: cyf <16268620+cyf12123@user.noreply.gitee.com> Date: Fri, 17 Oct 2025 16:54:22 +0800 Subject: [PATCH 3/5] PageShift15 enables 32K page size. --- .../goexperiment/exp_pageshift14_off.go | 8 ++ .../goexperiment/exp_pageshift14_on.go | 8 ++ .../goexperiment/exp_pageshift15_off.go | 8 ++ .../goexperiment/exp_pageshift15_on.go | 8 ++ src/internal/goexperiment/flags.go | 3 + src/runtime/runtime2.go | 2 + src/runtime/sizeclasses.go | 2 +- src/runtime/sizeclasses_14.go | 2 +- src/runtime/sizeclasses_15.go | 104 ++++++++++++++++++ 9 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 src/internal/goexperiment/exp_pageshift14_off.go create mode 100644 src/internal/goexperiment/exp_pageshift14_on.go create mode 100644 src/internal/goexperiment/exp_pageshift15_off.go create mode 100644 src/internal/goexperiment/exp_pageshift15_on.go create mode 100644 src/runtime/sizeclasses_15.go diff --git a/src/internal/goexperiment/exp_pageshift14_off.go b/src/internal/goexperiment/exp_pageshift14_off.go new file mode 100644 index 000000000..c13ed7b2c --- /dev/null +++ b/src/internal/goexperiment/exp_pageshift14_off.go @@ -0,0 +1,8 @@ +// Code generated by mkconsts.go. DO NOT EDIT. + +//go:build !goexperiment.pageshift14 + +package goexperiment + +const PageShift14 = false +const PageShift14Int = 0 diff --git a/src/internal/goexperiment/exp_pageshift14_on.go b/src/internal/goexperiment/exp_pageshift14_on.go new file mode 100644 index 000000000..2ba74c531 --- /dev/null +++ b/src/internal/goexperiment/exp_pageshift14_on.go @@ -0,0 +1,8 @@ +// Code generated by mkconsts.go. DO NOT EDIT. + +//go:build goexperiment.pageshift14 + +package goexperiment + +const PageShift14 = true +const PageShift14Int = 1 diff --git a/src/internal/goexperiment/exp_pageshift15_off.go b/src/internal/goexperiment/exp_pageshift15_off.go new file mode 100644 index 000000000..52ce321d0 --- /dev/null +++ b/src/internal/goexperiment/exp_pageshift15_off.go @@ -0,0 +1,8 @@ +// Code generated by mkconsts.go. DO NOT EDIT. + +//go:build !goexperiment.pageshift15 + +package goexperiment + +const PageShift15 = false +const PageShift15Int = 0 diff --git a/src/internal/goexperiment/exp_pageshift15_on.go b/src/internal/goexperiment/exp_pageshift15_on.go new file mode 100644 index 000000000..e8ce1fc3d --- /dev/null +++ b/src/internal/goexperiment/exp_pageshift15_on.go @@ -0,0 +1,8 @@ +// Code generated by mkconsts.go. DO NOT EDIT. + +//go:build goexperiment.pageshift15 + +package goexperiment + +const PageShift15 = true +const PageShift15Int = 1 diff --git a/src/internal/goexperiment/flags.go b/src/internal/goexperiment/flags.go index 6934f123c..6dcda3ec2 100644 --- a/src/internal/goexperiment/flags.go +++ b/src/internal/goexperiment/flags.go @@ -134,4 +134,7 @@ type Flags struct { //PageShift14 enables 16K page size. PageShift14 bool + + //PageShift15 enables 16K page size. + PageShift15 bool } diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 80e929bac..04874f123 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -627,6 +627,8 @@ type m struct { // bits of muintptr values available for flags, as required for // GOEXPERIMENT=spinbitmutex. _ [goexperiment.SpinbitMutexInt * 700 * (2 - goarch.PtrSize/4)]byte + + _ [goexperiment.PageShift15Int * 128]byte } type p struct { diff --git a/src/runtime/sizeclasses.go b/src/runtime/sizeclasses.go index d8518f517..73cfd51b4 100644 --- a/src/runtime/sizeclasses.go +++ b/src/runtime/sizeclasses.go @@ -1,6 +1,6 @@ // Code generated by mksizeclasses.go; DO NOT EDIT. //go:generate go run mksizeclasses.go -//go:build !goexperiment.pageshift14 +//go:build !goexperiment.pageshift15 && !goexperiment.pageshift14 package runtime diff --git a/src/runtime/sizeclasses_14.go b/src/runtime/sizeclasses_14.go index c6c36cca0..81dd9c190 100644 --- a/src/runtime/sizeclasses_14.go +++ b/src/runtime/sizeclasses_14.go @@ -1,6 +1,6 @@ // Code generated by mksizeclasses.go; DO NOT EDIT. //go:generate go run mksizeclasses.go -//go:build goexperiment.pageshift14 +//go:build !goexperiment.pageshift15 && goexperiment.pageshift14 package runtime diff --git a/src/runtime/sizeclasses_15.go b/src/runtime/sizeclasses_15.go new file mode 100644 index 000000000..b7b0d11aa --- /dev/null +++ b/src/runtime/sizeclasses_15.go @@ -0,0 +1,104 @@ +// Code generated by mksizeclasses.go; DO NOT EDIT. +//go:generate go run mksizeclasses.go +//go:build goexperiment.pageshift15 + +package runtime + +// class bytes/obj bytes/span objects tail waste max waste min align +// 1 8 32768 4096 0 87.50% 8 +// 2 16 32768 2048 0 43.75% 16 +// 3 24 32768 1365 8 29.18% 8 +// 4 32 32768 1024 0 21.88% 32 +// 5 48 32768 682 32 31.32% 16 +// 6 64 32768 512 0 23.44% 64 +// 7 80 32768 409 48 18.87% 16 +// 8 96 32768 341 32 15.71% 32 +// 9 112 32768 292 64 13.56% 16 +// 10 128 32768 256 0 11.72% 128 +// 11 144 32768 227 80 10.64% 16 +// 12 160 32768 204 128 9.73% 32 +// 13 176 32768 186 32 8.61% 16 +// 14 192 32768 170 128 8.17% 64 +// 15 208 32768 157 112 7.53% 16 +// 16 224 32768 146 64 6.88% 32 +// 17 240 32768 136 128 6.62% 16 +// 18 256 32768 128 0 5.86% 256 +// 19 288 32768 113 224 11.37% 32 +// 20 320 32768 102 128 10.04% 64 +// 21 352 32768 93 32 8.90% 32 +// 22 384 32768 85 128 8.43% 128 +// 23 416 32768 78 320 8.36% 32 +// 24 448 32768 73 64 7.10% 64 +// 25 480 32768 68 128 6.82% 32 +// 26 512 32768 64 0 6.05% 512 +// 27 576 32768 56 512 12.33% 64 +// 28 640 32768 51 128 10.20% 128 +// 29 704 32768 46 384 10.02% 64 +// 30 768 32768 42 512 9.64% 256 +// 31 832 32768 39 320 8.47% 64 +// 32 896 32768 36 512 8.48% 128 +// 33 960 32768 34 128 6.93% 64 +// 34 1024 32768 32 0 6.15% 1024 +// 35 1152 32768 28 512 12.41% 128 +// 36 1280 32768 25 768 12.03% 256 +// 37 1408 32768 23 384 10.09% 128 +// 38 1536 32768 21 512 9.70% 512 +// 39 1664 32768 19 1152 10.88% 128 +// 40 1792 32768 18 512 8.54% 256 +// 41 1920 32768 17 128 6.98% 128 +// 42 2048 32768 16 0 6.20% 2048 +// 43 2304 32768 14 512 12.46% 256 +// 44 2688 32768 12 512 15.59% 128 +// 45 2944 32768 11 384 9.73% 128 +// 46 3200 32768 10 768 10.13% 128 +// 47 3584 32768 9 512 12.08% 512 +// 48 4096 32768 8 0 12.48% 4096 +// 49 4608 32768 7 512 12.48% 512 +// 50 5376 32768 6 512 15.61% 256 +// 51 5888 65536 11 768 9.75% 256 +// 52 6528 32768 5 128 10.14% 128 +// 53 7168 65536 9 1024 10.34% 1024 +// 54 8192 32768 4 0 12.49% 8192 +// 55 9344 65536 7 128 12.49% 128 +// 56 9728 98304 10 1024 4.94% 512 +// 57 10880 32768 3 128 10.93% 128 +// 58 12288 98304 8 0 11.45% 4096 +// 59 13056 65536 5 256 6.24% 256 +// 60 13952 98304 7 640 7.02% 128 +// 61 14464 131072 9 896 4.19% 128 +// 62 16384 32768 2 0 11.71% 16384 +// 63 18688 131072 7 256 12.49% 256 +// 64 19584 98304 5 384 4.94% 128 +// 65 21760 65536 3 256 10.35% 256 +// 66 24576 98304 4 0 11.45% 8192 +// 67 26112 131072 5 512 6.25% 512 +// 68 27264 163840 6 256 4.37% 128 +// 69 28032 196608 7 384 2.93% 128 +// 70 28672 229376 8 0 2.23% 4096 +// 71 32768 32768 1 0 12.50% 32768 + +// alignment bits min obj size +// 8 3 8 +// 16 4 32 +// 32 5 256 +// 64 6 512 +// 128 7 1024 +// 4096 12 28672 +// 32768 15 32768 + +const ( + minHeapAlign = 8 + _MaxSmallSize = 32768 + smallSizeDiv = 8 + smallSizeMax = 1024 + largeSizeDiv = 128 + _NumSizeClasses = 72 + _PageShift = 15 + maxObjsPerSpan = 4096 +) + +var class_to_size = [_NumSizeClasses]uint16{0, 8, 16, 24, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, 2048, 2304, 2688, 2944, 3200, 3584, 4096, 4608, 5376, 5888, 6528, 7168, 8192, 9344, 9728, 10880, 12288, 13056, 13952, 14464, 16384, 18688, 19584, 21760, 24576, 26112, 27264, 28032, 28672, 32768} +var class_to_allocnpages = [_NumSizeClasses]uint8{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 1, 3, 2, 3, 4, 1, 4, 3, 2, 3, 4, 5, 6, 7, 1} +var class_to_divmagic = [_NumSizeClasses]uint32{0, ^uint32(0)/8 + 1, ^uint32(0)/16 + 1, ^uint32(0)/24 + 1, ^uint32(0)/32 + 1, ^uint32(0)/48 + 1, ^uint32(0)/64 + 1, ^uint32(0)/80 + 1, ^uint32(0)/96 + 1, ^uint32(0)/112 + 1, ^uint32(0)/128 + 1, ^uint32(0)/144 + 1, ^uint32(0)/160 + 1, ^uint32(0)/176 + 1, ^uint32(0)/192 + 1, ^uint32(0)/208 + 1, ^uint32(0)/224 + 1, ^uint32(0)/240 + 1, ^uint32(0)/256 + 1, ^uint32(0)/288 + 1, ^uint32(0)/320 + 1, ^uint32(0)/352 + 1, ^uint32(0)/384 + 1, ^uint32(0)/416 + 1, ^uint32(0)/448 + 1, ^uint32(0)/480 + 1, ^uint32(0)/512 + 1, ^uint32(0)/576 + 1, ^uint32(0)/640 + 1, ^uint32(0)/704 + 1, ^uint32(0)/768 + 1, ^uint32(0)/832 + 1, ^uint32(0)/896 + 1, ^uint32(0)/960 + 1, ^uint32(0)/1024 + 1, ^uint32(0)/1152 + 1, ^uint32(0)/1280 + 1, ^uint32(0)/1408 + 1, ^uint32(0)/1536 + 1, ^uint32(0)/1664 + 1, ^uint32(0)/1792 + 1, ^uint32(0)/1920 + 1, ^uint32(0)/2048 + 1, ^uint32(0)/2304 + 1, ^uint32(0)/2688 + 1, ^uint32(0)/2944 + 1, ^uint32(0)/3200 + 1, ^uint32(0)/3584 + 1, ^uint32(0)/4096 + 1, ^uint32(0)/4608 + 1, ^uint32(0)/5376 + 1, ^uint32(0)/5888 + 1, ^uint32(0)/6528 + 1, ^uint32(0)/7168 + 1, ^uint32(0)/8192 + 1, ^uint32(0)/9344 + 1, ^uint32(0)/9728 + 1, ^uint32(0)/10880 + 1, ^uint32(0)/12288 + 1, ^uint32(0)/13056 + 1, ^uint32(0)/13952 + 1, ^uint32(0)/14464 + 1, ^uint32(0)/16384 + 1, ^uint32(0)/18688 + 1, ^uint32(0)/19584 + 1, ^uint32(0)/21760 + 1, ^uint32(0)/24576 + 1, ^uint32(0)/26112 + 1, ^uint32(0)/27264 + 1, ^uint32(0)/28032 + 1, ^uint32(0)/28672 + 1, ^uint32(0)/32768 + 1} +var size_to_class8 = [smallSizeMax/smallSizeDiv + 1]uint8{0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34} +var size_to_class128 = [(_MaxSmallSize-smallSizeMax)/largeSizeDiv + 1]uint8{34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 43, 44, 44, 44, 45, 45, 46, 46, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71} -- Gitee From 089b95c5eea847d64a3e67bc1663cd449ade1d34 Mon Sep 17 00:00:00 2001 From: cyf <16268620+cyf12123@user.noreply.gitee.com> Date: Sat, 18 Oct 2025 11:31:49 +0800 Subject: [PATCH 4/5] Adjusted the calculation of maxPhysPageSize to 512 shifted left by an amount determined by goexperiment.PageShift15Int and PageShift14Int (using 12, 11, or 10 based on their values). --- src/runtime/mheap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index e058dd848..b484f0806 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -13,6 +13,7 @@ import ( "internal/goarch" "internal/runtime/atomic" "internal/runtime/sys" + "std/internal/goexperiment" "unsafe" ) @@ -23,7 +24,7 @@ const ( minPhysPageSize = 4096 // maxPhysPageSize is the maximum page size the runtime supports. - maxPhysPageSize = 512 << 10 + maxPhysPageSize = 512 << (goexperiment.PageShift15Int*12 + (1-goexperiment.PageShift15Int)*(goexperiment.PageShift14Int)*11 + (1-goexperiment.PageShift15Int)*(1-goexperiment.PageShift14Int)*10) // maxPhysHugePageSize sets an upper-bound on the maximum huge page size // that the runtime supports. -- Gitee From 59b3f179391e542dbb34c89f477a6e5056450fb4 Mon Sep 17 00:00:00 2001 From: cyf <16268620+cyf12123@user.noreply.gitee.com> Date: Sat, 18 Oct 2025 11:31:49 +0800 Subject: [PATCH 5/5] Adjusted the calculation of maxPhysPageSize to 512 shifted left by an amount determined by goexperiment.PageShift15Int and PageShift14Int (using 12, 11, or 10 based on their values). --- src/runtime/mheap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index e058dd848..d47f1a40d 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -13,6 +13,7 @@ import ( "internal/goarch" "internal/runtime/atomic" "internal/runtime/sys" + "internal/goexperiment" "unsafe" ) @@ -23,7 +24,7 @@ const ( minPhysPageSize = 4096 // maxPhysPageSize is the maximum page size the runtime supports. - maxPhysPageSize = 512 << 10 + maxPhysPageSize = 512 << (goexperiment.PageShift15Int*12 + (1-goexperiment.PageShift15Int)*(goexperiment.PageShift14Int)*11 + (1-goexperiment.PageShift15Int)*(1-goexperiment.PageShift14Int)*10) // maxPhysHugePageSize sets an upper-bound on the maximum huge page size // that the runtime supports. -- Gitee