]> Cypherpunks repositories - gostls13.git/commit
crypto/elliptic: reduce allocations in s390x P256 code
authorMichael Munday <mike.munday@ibm.com>
Tue, 26 Sep 2017 11:32:26 +0000 (07:32 -0400)
committerMichael Munday <mike.munday@ibm.com>
Mon, 13 Nov 2017 21:31:57 +0000 (21:31 +0000)
commite8905d2a66caf970d1f8e79d8101e6a670012447
treedb68e855fb6a263491a15ca14eee7f25715d0fe4
parent7f88d3c121a5a41f5fc286128d13f6b098dec6c1
crypto/elliptic: reduce allocations in s390x P256 code

The Go compiler assumes that pointers escape when passed into assembly
functions. To override this behavior we can annotate assembly functions
with go:noescape, telling the compiler that we know pointers do not
escape from it.

By annotating the assembly functions in the s390x P256 code in this way
we enable more variables to be allocated on the stack rather than
the heap, reducing the number of heap allocations required to execute
this code:

name        old alloc/op   new alloc/op   delta
SignP256      3.66kB ± 0%    2.64kB ± 0%  -27.95%  (p=0.008 n=5+5)
VerifyP256    4.46kB ± 0%    1.23kB ± 0%  -72.40%  (p=0.008 n=5+5)

name        old allocs/op  new allocs/op  delta
SignP256        40.0 ± 0%      31.0 ± 0%  -22.50%  (p=0.008 n=5+5)
VerifyP256      41.0 ± 0%      24.0 ± 0%  -41.46%  (p=0.008 n=5+5)

Change-Id: Id526c30c9b04b2ad79a55d76cab0e30cc8d60402
Reviewed-on: https://go-review.googlesource.com/66230
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/crypto/elliptic/p256_s390x.go