mirror of
https://github.com/golang/go
synced 2024-11-06 13:46:16 -07:00
28c5fed557
This change finishes off functionality register ABI for the reflect package. Specifically, it implements a call on a MakeFunc'd value by performing the reverse process that reflect.Value.Call does, using the same ABI steps. It implements a call on a method value created by reflect by translating between the method value's ABI to the method's ABI. Tests are added for both cases. For #40724. Change-Id: I302820b61fc0a8f94c5525a002bc02776aef41af Reviewed-on: https://go-review.googlesource.com/c/go/+/298670 Trust: Michael Knyszek <mknyszek@google.com> Run-TryBot: Michael Knyszek <mknyszek@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
// Copyright 2018 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.
|
|
|
|
package runtime
|
|
|
|
import "unsafe"
|
|
|
|
// Called from compiled code; declared for vet; do NOT call from Go.
|
|
func gcWriteBarrierCX()
|
|
func gcWriteBarrierDX()
|
|
func gcWriteBarrierBX()
|
|
func gcWriteBarrierBP()
|
|
func gcWriteBarrierSI()
|
|
func gcWriteBarrierR8()
|
|
func gcWriteBarrierR9()
|
|
|
|
// stackcheck checks that SP is in range [g->stack.lo, g->stack.hi).
|
|
func stackcheck()
|
|
|
|
// Called from assembly only; declared for go vet.
|
|
func settls() // argument in DI
|
|
|
|
// Retpolines, used by -spectre=ret flag in cmd/asm, cmd/compile.
|
|
func retpolineAX()
|
|
func retpolineCX()
|
|
func retpolineDX()
|
|
func retpolineBX()
|
|
func retpolineBP()
|
|
func retpolineSI()
|
|
func retpolineDI()
|
|
func retpolineR8()
|
|
func retpolineR9()
|
|
func retpolineR10()
|
|
func retpolineR11()
|
|
func retpolineR12()
|
|
func retpolineR13()
|
|
func retpolineR14()
|
|
func retpolineR15()
|
|
|
|
//go:noescape
|
|
func asmcgocall_no_g(fn, arg unsafe.Pointer)
|
|
|
|
// Used by reflectcall and the reflect package.
|
|
//
|
|
// Spills/loads arguments in registers to/from an internal/abi.RegArgs
|
|
// respectively. Does not follow the Go ABI.
|
|
func spillArgs()
|
|
func unspillArgs()
|