mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: add GC testing helpers for regabi signature fuzzer
This CL adds a set of helper functions for testing GC interactions. These are intended for use in the regabi signature fuzzer, but are generally useful for GC tests, so we make them generally available to runtime tests. These provide: 1. An easy way to force stack movement, for testing stack copying. 2. A simple and robust way to check the reachability of a set of pointers. 3. A way to check what general category of memory a pointer points to, mostly so tests can make sure they're testing what they mean to. For #40724, but generally useful. Change-Id: I15d33ccb3f5a792c0472a19c2cc9a8b4a9356a66 Reviewed-on: https://go-review.googlesource.com/c/go/+/305330 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
1ef114d12c
commit
4e1bf8ed38
5 changed files with 221 additions and 4 deletions
|
|
@ -1244,3 +1244,24 @@ func FinalizerGAsleep() bool {
|
|||
unlock(&finlock)
|
||||
return result
|
||||
}
|
||||
|
||||
// For GCTestMoveStackOnNextCall, it's important not to introduce an
|
||||
// extra layer of call, since then there's a return before the "real"
|
||||
// next call.
|
||||
var GCTestMoveStackOnNextCall = gcTestMoveStackOnNextCall
|
||||
|
||||
// For GCTestIsReachable, it's important that we do this as a call so
|
||||
// escape analysis can see through it.
|
||||
func GCTestIsReachable(ptrs ...unsafe.Pointer) (mask uint64) {
|
||||
return gcTestIsReachable(ptrs...)
|
||||
}
|
||||
|
||||
// For GCTestPointerClass, it's important that we do this as a call so
|
||||
// escape analysis can see through it.
|
||||
//
|
||||
// This is nosplit because gcTestPointerClass is.
|
||||
//
|
||||
//go:nosplit
|
||||
func GCTestPointerClass(p unsafe.Pointer) string {
|
||||
return gcTestPointerClass(p)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue