diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-03 20:50:09 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-03 20:58:23 +0900 |
| commit | 3d54d1f1767398e8cd17db34047203e090d2a9a9 (patch) | |
| tree | 0605eb5e40feb4f0d4f4db8a9169d86c035fb4e1 /internal/rosa/all.go | |
| parent | 9feac7738f5dbe9f2f32cfa297582d3b520cb049 (diff) | |
internal/rosa: drop caches
This enables accurate benchmarking of the toolchain abstraction.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/all.go')
| -rw-r--r-- | internal/rosa/all.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/rosa/all.go b/internal/rosa/all.go index 4b87ed69..fefd3863 100644 --- a/internal/rosa/all.go +++ b/internal/rosa/all.go @@ -307,6 +307,17 @@ var ( artifactsOnce [_toolchainEnd][len(artifactsM)]sync.Once ) +// zero zeros the value pointed to by p. +func zero[T any](p *T) { var v T; *p = v } + +// DropCaches arranges for all cached [pkg.Artifact] to be freed some time after +// it returns. Must not be used concurrently with any other function from this +// package. +func DropCaches() { + zero(&artifacts) + zero(&artifactsOnce) +} + // GetMetadata returns [Metadata] of a [PArtifact]. func GetMetadata(p PArtifact) *Metadata { return &artifactsM[p] } |
