]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/objabi,runtime: simplify sys.GOEXPERIMENT parsing
authorAustin Clements <austin@google.com>
Wed, 17 Mar 2021 16:22:58 +0000 (12:22 -0400)
committerAustin Clements <austin@google.com>
Thu, 18 Mar 2021 21:27:24 +0000 (21:27 +0000)
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>
src/cmd/internal/objabi/util.go
src/runtime/proc.go

index 9fbe6490e0bcc466874952cc5f91716416fc24ae..2a33f0d84ab76af81ddb23b51fd2f1b85d0e6935 100644 (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" {
index 9ebfe70883e1c69b53d13a004df56a14bd0da4d7..a666f86abc042bc4e1182d90de348e94f89bd84f 100644 (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
 }