• Michael Munday's avatar
    crypto/elliptic: reduce allocations in s390x P256 code · e8905d2a
    Michael Munday authored
    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: 's avatarIan Lance Taylor <iant@golang.org>
    e8905d2a
Name
Last commit
Last update
..
elliptic.go Loading commit data...
elliptic_test.go Loading commit data...
p224.go Loading commit data...
p224_test.go Loading commit data...
p256.go Loading commit data...
p256_amd64.go Loading commit data...
p256_asm_amd64.s Loading commit data...
p256_asm_s390x.s Loading commit data...
p256_generic.go Loading commit data...
p256_s390x.go Loading commit data...