aboutsummaryrefslogtreecommitdiff
path: root/src/time/example_test.go
diff options
context:
space:
mode:
authorMichael Anthony Knyszek <mknyszek@google.com>2022-02-10 00:49:44 +0000
committerMichael Knyszek <mknyszek@google.com>2022-04-26 22:15:21 +0000
commitd29f5247b8cbf5f2cb7b0e325a5eb1c7c5c1a91f (patch)
treeb17cc67d7d830262267d264799f5ed4e95da8ed8 /src/time/example_test.go
parentd8cf2243e0ed1c498ed405432c10f9596815a582 (diff)
downloadgo-d29f5247b8cbf5f2cb7b0e325a5eb1c7c5c1a91f.tar.gz
go-d29f5247b8cbf5f2cb7b0e325a5eb1c7c5c1a91f.zip
runtime: refactor the scavenger and make it testable
This change refactors the scavenger into a type whose methods represent the actual function and scheduling of the scavenger. It also stubs out access to global state in order to make it testable. This change thus also adds a test for the scavenger. In writing this test, I discovered the lack of a behavior I expected: if the pageAlloc.scavenge returns < the bytes requested scavenged, that means the heap is exhausted. This has been true this whole time, but was not documented or explicitly relied upon. This change rectifies that. In theory this means the scavenger could spin in run() indefinitely (as happened in the test) if shouldStop never told it to stop. In practice, shouldStop fires long before the heap is exhausted, but for future changes it may be important. At the very least it's good to be intentional about these things. While we're here, I also moved the call to stopTimer out of wake and into sleep. There's no reason to add more operations to a context that's already precarious (running without a P on sysmon). Change-Id: Ib31b86379fd9df84f25ae282734437afc540da5c Reviewed-on: https://go-review.googlesource.com/c/go/+/384734 Reviewed-by: Michael Pratt <mpratt@google.com> Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/time/example_test.go')
0 files changed, 0 insertions, 0 deletions