// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build goexperiment.regabireflect
+//go:build goexperiment.regabiargs
package abi
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !goexperiment.regabireflect && !amd64
+//go:build !goexperiment.regabiargs && !amd64
package abi
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build goexperiment.regabireflect && (ppc64 || ppc64le)
+//go:build goexperiment.regabiargs && (ppc64 || ppc64le)
package abi
baseline = goexperiment.Flags{
RegabiWrappers: regabiSupported,
- RegabiReflect: regabiSupported,
RegabiArgs: regabiSupported,
PacerRedesign: true,
}
// do the right thing.
names["regabi"] = func(v bool) {
flags.RegabiWrappers = v
- flags.RegabiReflect = v
flags.RegabiArgs = v
}
// regabi is always enabled on amd64.
if goarch == "amd64" {
flags.RegabiWrappers = true
- flags.RegabiReflect = true
flags.RegabiArgs = true
}
// regabi is only supported on amd64, arm64, ppc64 and ppc64le.
if !regabiSupported {
- flags.RegabiReflect = false
flags.RegabiArgs = false
}
// Check regabi dependencies.
- if flags.RegabiArgs && !(flags.RegabiWrappers && flags.RegabiReflect) {
- err = fmt.Errorf("GOEXPERIMENT regabiargs requires regabiwrappers,regabireflect")
+ if flags.RegabiArgs && !flags.RegabiWrappers {
+ err = fmt.Errorf("GOEXPERIMENT regabiargs requires regabiwrappers")
}
return
}
+++ /dev/null
-// Code generated by mkconsts.go. DO NOT EDIT.
-
-//go:build !goexperiment.regabireflect
-// +build !goexperiment.regabireflect
-
-package goexperiment
-
-const RegabiReflect = false
-const RegabiReflectInt = 0
+++ /dev/null
-// Code generated by mkconsts.go. DO NOT EDIT.
-
-//go:build goexperiment.regabireflect
-// +build goexperiment.regabireflect
-
-package goexperiment
-
-const RegabiReflect = true
-const RegabiReflectInt = 1
// ABI0 and ABIInternal functions. Without this, the ABIs are
// assumed to be identical so cross-ABI calls are direct.
RegabiWrappers bool
- // RegabiReflect enables the register-passing paths in
- // reflection calls. This is also gated by intArgRegs in
- // reflect and runtime (which are disabled by default) so it
- // can be used in targeted tests.
- RegabiReflect bool
// RegabiArgs enables register arguments/results in all
// compiled Go functions.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build goexperiment.regabireflect && goexperiment.regabiargs
+//go:build goexperiment.regabiargs
package reflect_test
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build goexperiment.regabireflect
+//go:build goexperiment.regabiargs
// This file contains tests specific to making sure the register ABI
// works in a bunch of contexts in the runtime.
MOVW $0, R26
B runtime·morestack(SB)
-#ifdef GOEXPERIMENT_regabireflect
+#ifdef GOEXPERIMENT_regabiargs
// spillArgs stores return values from registers to a *internal/abi.RegArgs in R20.
TEXT ·spillArgs(SB),NOSPLIT,$0-0
MOVD R0, (0*8)(R20)
MOVD R3, ret+0(FP)
RET
-#ifdef GOEXPERIMENT_regabireflect
+#ifdef GOEXPERIMENT_regabiargs
// spillArgs stores return values from registers to a *internal/abi.RegArgs in R20.
TEXT runtime·spillArgs(SB),NOSPLIT,$0-0
MOVD R3, 0(R20)