1
0
mirror of https://github.com/golang/go synced 2024-11-26 06:27:58 -07:00

cmd/internal/objabi,runtime: simplify sys.GOEXPERIMENT parsing

Previously, the runtime had to understand the full syntax of the
GOEXPERIMENT environment variable. Now, sys.GOEXPERIMENT is the
pre-processed experiment list produced by objabi, so we can simplify
the runtime parser.

Change-Id: I0d113a4347dde50a35b8b1f2b0110c88fe802921
Reviewed-on: https://go-review.googlesource.com/c/go/+/303049
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
Austin Clements 2021-03-17 12:22:58 -04:00
parent 0c93b16d01
commit 095ba22597
2 changed files with 5 additions and 4 deletions

View File

@ -171,6 +171,7 @@ func init() {
}
// Set GOEXPERIMENT to the parsed and canonicalized set of experiments.
// This format must be parseable by runtime.haveexperiment.
GOEXPERIMENT = expList()
}
@ -184,7 +185,7 @@ func init() {
var FramePointerEnabled = GOARCH == "amd64" || GOARCH == "arm64"
func addexp(s string) {
// Could do general integer parsing here, but the runtime.haveexperiment doesn't yet.
// We could do general integer parsing here, but there's no need yet.
v, vb := 1, true
name := s
if len(name) > 2 && name[:2] == "no" {

View File

@ -6027,6 +6027,9 @@ func setMaxThreads(in int) (out int) {
}
func haveexperiment(name string) bool {
// GOEXPERIMENT is a comma-separated list of enabled
// experiments. It's not the raw environment variable, but a
// pre-processed list from cmd/internal/objabi.
x := sys.GOEXPERIMENT
for x != "" {
xname := ""
@ -6039,9 +6042,6 @@ func haveexperiment(name string) bool {
if xname == name {
return true
}
if len(xname) > 2 && xname[:2] == "no" && xname[2:] == name {
return false
}
}
return false
}