ssa: makeInterface check funcdecl => closure

This commit is contained in:
visualfc
2024-08-15 10:03:34 +08:00
parent 9f1100b967
commit 2174d8fe8c
4 changed files with 692 additions and 238 deletions

35
cl/_testrt/funcdecl/in.go Normal file
View File

@@ -0,0 +1,35 @@
package main
import (
"unsafe"
)
func main() {
println("hello")
check(demo)
}
func check(fn func()) {
var a any = demo
var b any = fn
fn1 := a.(func())
fn2 := b.(func())
println(a, b, fn, fn1, fn2, demo)
println(closurePtr(a) == closurePtr(b))
}
func closurePtr(a any) unsafe.Pointer {
return (*rtype)(unsafe.Pointer(&a)).ptr.fn
}
type rtype struct {
typ unsafe.Pointer
ptr *struct {
fn unsafe.Pointer
env unsafe.Pointer
}
}
func demo() {
println("demo")
}