mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: change functype's in and out fields to []*_type
Allows removing a few gratuitous unsafe.Pointer conversions and parallels the type of reflect.funcType's in and out fields ([]*rtype). Change-Id: Ie5ca230a94407301a854dfd8782a3180d5054bc4 Reviewed-on: https://go-review.googlesource.com/16163 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
163653eeaa
commit
c279250946
3 changed files with 9 additions and 10 deletions
|
|
@ -45,16 +45,16 @@ func compileCallback(fn eface, cleanstack bool) (code uintptr) {
|
|||
panic("compileCallback: not a function")
|
||||
}
|
||||
ft := (*functype)(unsafe.Pointer(fn._type))
|
||||
if ft.out.len != 1 {
|
||||
if len(ft.out) != 1 {
|
||||
panic("compileCallback: function must have one output parameter")
|
||||
}
|
||||
uintptrSize := unsafe.Sizeof(uintptr(0))
|
||||
if t := (**_type)(unsafe.Pointer(ft.out.array)); (*t).size != uintptrSize {
|
||||
if ft.out[0].size != uintptrSize {
|
||||
panic("compileCallback: output parameter size is wrong")
|
||||
}
|
||||
argsize := uintptr(0)
|
||||
for _, t := range (*[1024](*_type))(unsafe.Pointer(ft.in.array))[:ft.in.len] {
|
||||
if (*t).size > uintptrSize {
|
||||
for _, t := range ft.in {
|
||||
if t.size > uintptrSize {
|
||||
panic("compileCallback: input parameter size is wrong")
|
||||
}
|
||||
argsize += uintptrSize
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue