ssa: set pointer directiface

This commit is contained in:
visualfc
2024-07-03 22:16:24 +08:00
parent 490a16a8df
commit bcb217c1da
19 changed files with 1098 additions and 386 deletions

View File

@@ -291,8 +291,13 @@ func IfacePtrData(i iface) unsafe.Pointer {
if i.tab == nil {
panic(errorString("invalid memory address or nil pointer dereference").Error())
}
if i.tab._type.Kind_&abi.KindDirectIface != 0 {
return unsafe.Pointer(&i.data)
switch i.tab._type.Kind() {
case abi.Bool, abi.Int, abi.Int8, abi.Int16, abi.Int32, abi.Int64,
abi.Uint, abi.Uint8, abi.Uint16, abi.Uint32, abi.Uint64, abi.Uintptr,
abi.Float32, abi.Float64, abi.Array, abi.Struct:
if isDirectIface(i.tab._type) {
return unsafe.Pointer(&i.data)
}
}
return i.data
}