⋯ 252 hidden lines@@ -253,8 +253,8 @@ func RegisterFunc(fptr any, cfn uintptr) { 253 runtime.KeepAlive(keepAlive) 253 runtime.KeepAlive(keepAlive) 254 runtime.KeepAlive(args) 254 runtime.KeepAlive(args) 255 }() 255 }() 256 - syscall := thePool.Get().(*syscall15Args) 256 + 257 - defer thePool.Put(syscall) 257 + var arm64_r8 uintptr 258 if ty.NumOut() == 1 && ty.Out(0).Kind() == reflect.Struct { 258 if ty.NumOut() == 1 && ty.Out(0).Kind() == reflect.Struct { 259 outType := ty.Out(0) 259 outType := ty.Out(0) 260 if runtime.GOARCH == "amd64" && outType.Size() > maxRegAllocStructSize { 260 if runtime.GOARCH == "amd64" && outType.Size() > maxRegAllocStructSize { ⋯ 5 hidden lines@@ -266,7 +266,7 @@ func RegisterFunc(fptr any, cfn uintptr) { 266 if !isAllFloats || numFields > 4 { 266 if !isAllFloats || numFields > 4 { 267 val := reflect.New(outType) 267 val := reflect.New(outType) 268 keepAlive = append(keepAlive, val) 268 keepAlive = append(keepAlive, val) 269 - syscall.arm64_r8 = val.Pointer() 269 + arm64_r8 = val.Pointer() 270 } 270 } 271 } 271 } 272 } 272 } ⋯ 9 hidden lines@@ -282,6 +282,10 @@ func RegisterFunc(fptr any, cfn uintptr) { 282 } 282 } 283 keepAlive = addValue(v, keepAlive, addInt, addFloat, addStack, &numInts, &numFloats, &numStack) 283 keepAlive = addValue(v, keepAlive, addInt, addFloat, addStack, &numInts, &numFloats, &numStack) 284 } 284 } 285 + 286 + syscall := thePool.Get().(*syscall15Args) 287 + defer thePool.Put(syscall) 288 + 285 if runtime.GOARCH == "arm64" || runtime.GOOS != "windows" { 289 if runtime.GOARCH == "arm64" || runtime.GOOS != "windows" { 286 // Use the normal arm64 calling convention even on Windows 290 // Use the normal arm64 calling convention even on Windows 287 *syscall = syscall15Args{ 291 *syscall = syscall15Args{ ⋯ 2 hidden lines@@ -290,10 +294,11 @@ func RegisterFunc(fptr any, cfn uintptr) { 290 sysargs[6], sysargs[7], sysargs[8], sysargs[9], sysargs[10], sysargs[11], 294 sysargs[6], sysargs[7], sysargs[8], sysargs[9], sysargs[10], sysargs[11], 291 sysargs[12], sysargs[13], sysargs[14], 295 sysargs[12], sysargs[13], sysargs[14], 292 floats[0], floats[1], floats[2], floats[3], floats[4], floats[5], floats[6], floats[7], 296 floats[0], floats[1], floats[2], floats[3], floats[4], floats[5], floats[6], floats[7], 293 - syscall.arm64_r8, 297 + arm64_r8, 294 } 298 } 295 runtime_cgocall(syscall15XABI0, unsafe.Pointer(syscall)) 299 runtime_cgocall(syscall15XABI0, unsafe.Pointer(syscall)) 296 } else { 300 } else { 301 + *syscall = syscall15Args{} 297 // This is a fallback for Windows amd64, 386, and arm. Note this may not support floats 302 // This is a fallback for Windows amd64, 386, and arm. Note this may not support floats 298 syscall.a1, syscall.a2, _ = syscall_syscall15X(cfn, sysargs[0], sysargs[1], sysargs[2], sysargs[3], sysargs[4], 303 syscall.a1, syscall.a2, _ = syscall_syscall15X(cfn, sysargs[0], sysargs[1], sysargs[2], sysargs[3], sysargs[4], 299 sysargs[5], sysargs[6], sysargs[7], sysargs[8], sysargs[9], sysargs[10], sysargs[11], 304 sysargs[5], sysargs[6], sysargs[7], sysargs[8], sysargs[9], sysargs[10], sysargs[11],