cgo: add support for #cgo noescape lines

Here is the proposal:
https://github.com/golang/go/issues/56378

They are documented here:
https://pkg.go.dev/cmd/cgo@master#hdr-Optimizing_calls_of_C_code

This would have been very useful to fix
https://github.com/tinygo-org/bluetooth/issues/176 in a nice way. That
bug is now fixed in a different way using a wrapper function, but once
this new noescape pragma gets included in TinyGo we could remove the
workaround and use `#cgo noescape` instead.
This commit is contained in:
Ayke van Laethem
2023-09-02 13:52:21 +02:00
committed by Ron Evans
parent fd625f7265
commit b7a3fd8d2f
6 changed files with 87 additions and 8 deletions
+5
View File
@@ -75,5 +75,10 @@ func C.staticfunc!symbols.go(x C.int)
var C.staticfunc!symbols.go$funcaddr unsafe.Pointer
//export notEscapingFunction
//go:noescape
func C.notEscapingFunction(a *C.int)
var C.notEscapingFunction$funcaddr unsafe.Pointer
//go:extern someValue
var C.someValue C.int