aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/exec_linux_test.go
diff options
context:
space:
mode:
authorRob Findley <rfindley@google.com>2025-02-19 22:07:09 +0000
committerGopher Robot <gobot@golang.org>2025-03-05 13:54:45 -0800
commit9189921e4759055141b51fdbb8b7b69ee4fdd477 (patch)
treecf2b3d34b7d9c74cee15b125dc486e56a9e3c2d2 /src/syscall/exec_linux_test.go
parentf7204d76bc3af681c12e8ed9bfb18c20bf6f8bc1 (diff)
downloadgo-9189921e4759055141b51fdbb8b7b69ee4fdd477.tar.xz
go/types,types2: externalize used objects
The 'used' field on Var and PkgName is fundamentally an aspect of the type checking pass: it records when objects are used, for the purposes of reporting errors for unused variables or package names. While expedient and performant, recording this information in the types.Object instances themselves increases the memory footprint of type-checked packages, and (as we saw in golang/go#71817) can lead to data races when Objects are reused in follow-up type checking, such as is done with the CheckExpr and Eval APIs. Fix this by externalizing the 'used' information into two maps (one for variables and one for packages) on the types.Checker, so that they are garbage-collected after type checking, and cannot be a source of data races. Benchmarks showed essentially no change in performance. Fixes golang/go#71817 Change-Id: I40daeabe4ecaca3bcb494e2f1c62a04232098e49 Reviewed-on: https://go-review.googlesource.com/c/go/+/650796 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Robert Findley <rfindley@google.com> Reviewed-by: Robert Griesemer <gri@google.com>
Diffstat (limited to 'src/syscall/exec_linux_test.go')
0 files changed, 0 insertions, 0 deletions