]> Cypherpunks repositories - gostls13.git/commit
internal/runtime/gc/scan: import scan kernel from gclab [green tea]
authorMichael Anthony Knyszek <mknyszek@google.com>
Wed, 5 Mar 2025 20:12:47 +0000 (20:12 +0000)
committerGopher Robot <gobot@golang.org>
Tue, 12 Aug 2025 18:23:02 +0000 (11:23 -0700)
commit889ab74169db2c8758f51c1a199a90266b16669b
treeff177823d70a9a0ee8cb4f9f31cf4da8ebfbffad
parent182336bf05c8e833f433510ba62205d8ce40299a
internal/runtime/gc/scan: import scan kernel from gclab [green tea]

This change imports the AVX512 GC scanning kernel from CL 593938 into a
new package, internal/runtime/gc/scan. Credit to Austin Clements for
most of this work. I did some cleanup, added support for more size
classes to the expanders, and added more testing. I also restructured
the code to make it easier and clearer to add new scan kernels for new
architectures.

For #73581.

Change-Id: I76bcbc889fa6cad73ba0084620fae084a5912e6b
Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64_avx512,gotip-linux-amd64_avx512-greenteagc
Reviewed-on: https://go-review.googlesource.com/c/go/+/655280
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
34 files changed:
src/cmd/internal/objabi/pkgspecial.go
src/go/build/deps_test.go
src/internal/cpu/cpu.go
src/internal/cpu/cpu_x86.go
src/internal/cpu/datacache_unsupported.go [new file with mode: 0644]
src/internal/cpu/datacache_x86.go [new file with mode: 0644]
src/internal/cpu/datacache_x86_test.go [new file with mode: 0644]
src/internal/goarch/goarch.go
src/internal/runtime/gc/internal/gen/gen.go [new file with mode: 0644]
src/internal/runtime/gc/internal/gen/gp.go [new file with mode: 0644]
src/internal/runtime/gc/internal/gen/regalloc.go [new file with mode: 0644]
src/internal/runtime/gc/internal/gen/simd.go [new file with mode: 0644]
src/internal/runtime/gc/internal/gen/val.go [new file with mode: 0644]
src/internal/runtime/gc/malloc.go
src/internal/runtime/gc/mksizeclasses.go
src/internal/runtime/gc/scan/expand_amd64.go [new file with mode: 0644]
src/internal/runtime/gc/scan/expand_amd64.s [new file with mode: 0644]
src/internal/runtime/gc/scan/expand_amd64_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/expand_reference.go [new file with mode: 0644]
src/internal/runtime/gc/scan/expand_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/filter.go [new file with mode: 0644]
src/internal/runtime/gc/scan/filter_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/mem_nounix_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/mem_unix_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/mkasm.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_amd64.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_amd64.s [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_amd64_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_generic.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_generic_test.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_go.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_reference.go [new file with mode: 0644]
src/internal/runtime/gc/scan/scan_test.go [new file with mode: 0644]
src/internal/runtime/gc/sizeclasses.go