]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/internal/buildcfg/exp.go
[dev.typeparams] all: merge master (4711bf3) into dev.typeparams
[gostls13.git] / src / internal / buildcfg / exp.go
index 9a60253aab9b1830815bf4b69ffd3fee32474974..6e8bf30743dfba6a9ab8d5ad669f9e446e6e7948 100644 (file)
@@ -46,13 +46,11 @@ var FramePointerEnabled = GOARCH == "amd64" || GOARCH == "arm64"
 //
 // TODO(mdempsky): Move to internal/goexperiment.
 func ParseGOEXPERIMENT(goos, goarch, goexp string) (flags, baseline goexperiment.Flags, err error) {
-       regabiSupported := goarch == "amd64" && (goos == "android" || goos == "linux" || goos == "darwin" || goos == "windows")
+       regabiSupported := goarch == "amd64" || goarch == "arm64"
 
        baseline = goexperiment.Flags{
                RegabiWrappers: regabiSupported,
-               RegabiG:        regabiSupported,
                RegabiReflect:  regabiSupported,
-               RegabiDefer:    regabiSupported,
                RegabiArgs:     regabiSupported,
        }
 
@@ -78,9 +76,7 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (flags, baseline goexperiment
                // do the right thing.
                names["regabi"] = func(v bool) {
                        flags.RegabiWrappers = v
-                       flags.RegabiG = v
                        flags.RegabiReflect = v
-                       flags.RegabiDefer = v
                        flags.RegabiArgs = v
                }
 
@@ -109,20 +105,19 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (flags, baseline goexperiment
                }
        }
 
-       // regabi is only supported on amd64.
-       if goarch != "amd64" {
+       // regabiwrappers is always enabled on amd64.
+       if goarch == "amd64" {
+               flags.RegabiWrappers = true
+       }
+       // regabi is only supported on amd64 and arm64.
+       if goarch != "amd64" && goarch != "arm64" {
                flags.RegabiWrappers = false
-               flags.RegabiG = false
                flags.RegabiReflect = false
-               flags.RegabiDefer = false
                flags.RegabiArgs = false
        }
        // Check regabi dependencies.
-       if flags.RegabiG && !flags.RegabiWrappers {
-               err = fmt.Errorf("GOEXPERIMENT regabig requires regabiwrappers")
-       }
-       if flags.RegabiArgs && !(flags.RegabiWrappers && flags.RegabiG && flags.RegabiReflect && flags.RegabiDefer) {
-               err = fmt.Errorf("GOEXPERIMENT regabiargs requires regabiwrappers,regabig,regabireflect,regabidefer")
+       if flags.RegabiArgs && !(flags.RegabiWrappers && flags.RegabiReflect) {
+               err = fmt.Errorf("GOEXPERIMENT regabiargs requires regabiwrappers,regabireflect")
        }
        return
 }