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>
}
// Set GOEXPERIMENT to the parsed and canonicalized set of experiments.
+ // This format must be parseable by runtime.haveexperiment.
GOEXPERIMENT = expList()
}
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" {
}
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 := ""
if xname == name {
return true
}
- if len(xname) > 2 && xname[:2] == "no" && xname[2:] == name {
- return false
- }
}
return false
}