]> Cypherpunks repositories - gostls13.git/commit
crypto/internal/boring: use noescape and nocallback cgo directives
authorqmuntal <quimmuntal@gmail.com>
Fri, 1 Sep 2023 07:26:56 +0000 (09:26 +0200)
committerQuim Muntal <quimmuntal@gmail.com>
Mon, 23 Oct 2023 19:41:39 +0000 (19:41 +0000)
commite46e8610aba89ed91896ab6ccc5349636e0b4df2
treee19b0c1c0b532229c3403970f512ab9024c085b5
parentc65f74d339169a5597c64a0076c17905c85b37d8
crypto/internal/boring: use noescape and nocallback cgo directives

The new noescape and nocallback directives can be used instead of the C
wrapper functions that are there just to avoid some parameters being
escaped to the heap.

This CL also helps demonstrate the use of the new directives in real
code.

I've added some benchmarks to demonstrate that this CL doesn't
introduce new heap allocations when using boringcrypto:

```
goos: linux
goarch: amd64
pkg: crypto/aes
cpu: AMD EPYC 7763 64-Core Processor
BenchmarkGCMSeal-32      8378692        143.3 ns/op  111.65 MB/s        0 B/op        0 allocs/op
BenchmarkGCMOpen-32      8383038        142.7 ns/op  112.11 MB/s        0 B/op        0 allocs/op
```

Change-Id: Ifd775484eb9a105afc5c3d4e75a6c6655cbadc53
Reviewed-on: https://go-review.googlesource.com/c/go/+/525035
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/crypto/cipher/gcm_test.go
src/crypto/internal/boring/aes.go