1
0
mirror of https://github.com/golang/go synced 2024-11-26 04:07:59 -07:00

reflect,runtime: assume register ABI with GOEXPERIMENT=regabiargs

This change causes finalizers, reflect calls, and Windows syscall
callbacks to assume the register ABI when GOEXPERIMENT=regabiargs is
set. That is, when all Go functions are using the new ABI by default,
these features should assume the new ABI too.

For #40724.

Change-Id: Ie4ee66b8085b692e1ff675f01134c9a4703ae1b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/306571
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
Michael Anthony Knyszek 2021-04-01 15:02:11 +00:00 committed by Michael Knyszek
parent 51cd074c59
commit 27d306281c
6 changed files with 44 additions and 4 deletions

View File

@ -28,9 +28,9 @@ import (
// commented out there should be the actual values once
// we're ready to use the register ABI everywhere.
var (
intArgRegs = 0 // abi.IntArgRegs
floatArgRegs = 0 // abi.FloatArgRegs
floatRegSize = uintptr(0) // uintptr(abi.EffectiveFloatRegSize)
intArgRegs = abi.IntArgRegs * experimentRegabiArgs
floatArgRegs = abi.FloatArgRegs * experimentRegabiArgs
floatRegSize = uintptr(abi.EffectiveFloatRegSize * experimentRegabiArgs)
)
// abiStep represents an ABI "instruction." Each instruction

View File

@ -0,0 +1,10 @@
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !goexperiment.regabiargs
// +build !goexperiment.regabiargs
package reflect
const experimentRegabiArgs = 0

View File

@ -0,0 +1,10 @@
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build goexperiment.regabiargs
// +build goexperiment.regabiargs
package reflect
const experimentRegabiArgs = 1

View File

@ -0,0 +1,10 @@
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build !goexperiment.regabiargs
// +build !goexperiment.regabiargs
package runtime
const experimentRegabiArgs = 0

View File

@ -0,0 +1,10 @@
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build goexperiment.regabiargs
// +build goexperiment.regabiargs
package runtime
const experimentRegabiArgs = 1

View File

@ -423,4 +423,4 @@ func sigpanic0()
// everywhere.
//
// Protected by finlock.
var intArgRegs = 0 // abi.IntArgRegs
var intArgRegs = abi.IntArgRegs * experimentRegabiArgs