go/src
Michael Munday e8905d2a66 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>
2017-11-13 21:31:57 +00:00
..
archive archive/zip: use Time.UTC instead of Time.In(time.UTC) 2017-11-10 00:27:33 +00:00
bufio bufio: add Reader.Size and Writer.Size accessors 2017-11-02 17:17:44 +00:00
builtin
bytes bytes: reduce work in IndexNearPageBoundary test 2017-11-04 11:09:49 +00:00
cmd cmd/compile: remove some more gotos in gc 2017-11-13 21:09:20 +00:00
compress compress/bzip2: fix checksum mismatch on empty reads 2017-09-25 23:05:58 +00:00
container container/ring: fix example_test.go 2017-10-31 03:52:55 +00:00
context context: fix references to "d" in WithDeadline docs 2017-09-21 03:00:51 +00:00
crypto crypto/elliptic: reduce allocations in s390x P256 code 2017-11-13 21:31:57 +00:00
database/sql all: change github.com issue links to golang.org 2017-11-04 04:13:41 +00:00
debug debug/dwarf: clarify StructField.ByteSize doc 2017-10-18 21:45:30 +00:00
encoding encoding/json: always ignore embedded pointers to unexported struct types 2017-11-13 18:23:38 +00:00
errors
expvar expvar: make (*Map).Init clear existing keys 2017-09-11 21:31:51 +00:00
flag flag: add (*FlagSet).Name, (*FlagSet).ErrorHandling, export (*FlagSet).Output 2017-10-31 03:54:16 +00:00
fmt fmt: hide bad format in test from vet 2017-10-31 13:49:53 +00:00
go crypto/x509: handle name constraints with cryptobyte 2017-11-12 01:19:40 +00:00
hash hash: add marshaling, unmarshaling example 2017-11-04 03:47:34 +00:00
html all: revert "all: prefer strings.IndexByte over strings.Index" 2017-10-05 23:19:10 +00:00
image all: change github.com issue links to golang.org 2017-11-04 04:13:41 +00:00
index/suffixarray
internal net: implement ReadMsg/WriteMsg on windows 2017-11-10 05:55:10 +00:00
io io: fix Pipe regression with differing error types 2017-11-02 23:05:53 +00:00
log log: Remove unnecessary else 2017-10-25 05:02:37 +00:00
math math/big: add security warning to (*Int).Rand 2017-11-06 15:55:31 +00:00
mime all: unindent some if bodies by exiting early 2017-10-31 20:07:46 +00:00
net net/http/httputil: make ReverseProxy close response body if ModifyResponse returns an error 2017-11-11 20:12:59 +00:00
os syscall: fix NaCl Link syscall error handling 2017-11-06 16:36:34 +00:00
path all: revert "all: prefer strings.LastIndexByte over strings.LastIndex" 2017-10-05 23:19:42 +00:00
plugin cmd/link, plugin: always encode path 2017-10-26 15:08:37 +00:00
reflect all: unindent some if bodies by exiting early 2017-10-31 20:07:46 +00:00
regexp go/printer: forbid empty line before first comment in block 2017-11-02 18:17:22 +00:00
runtime cmd/go: implement per-package asmflags, gcflags, ldflags, gccgoflags 2017-11-09 15:04:04 +00:00
sort sort: split post-Go1.4 code into its own file 2017-10-27 16:01:43 +00:00
strconv unicode: update to Unicode 10.0.0 2017-10-24 12:42:35 +00:00
strings strings: optimize ToLower 2017-11-08 21:47:19 +00:00
sync all: change github.com issue links to golang.org 2017-11-04 04:13:41 +00:00
syscall syscall: change SysProcAttr.Token type to Token 2017-11-07 22:06:35 +00:00
testing testing/iotest: fix NewReadLogger documentation typo 2017-10-19 15:59:21 +00:00
text text/template: remove unnecessary lexer field 2017-11-10 04:13:30 +00:00
time time: add example for Time.Unix 2017-11-13 18:52:13 +00:00
unicode go/printer: forbid empty line before first comment in block 2017-11-02 18:17:22 +00:00
unsafe
vendor/golang_org/x vendor: add golang.org/x/crypto/cryptobyte 2017-11-08 00:18:05 +00:00
Make.dist
all.bash
all.bat
all.rc
androidtest.bash
bootstrap.bash
buildall.bash
clean.bash
clean.bat
clean.rc
cmp.bash
iostest.bash
make.bash cmd/dist: fix bad LC_TIME assumption in 'date' invocation 2017-11-03 13:42:33 +00:00
make.bat build: quiet make.bash, make.bat, make.rc 2017-10-31 13:48:53 +00:00
make.rc build: quiet make.bash, make.bat, make.rc 2017-10-31 13:48:53 +00:00
naclmake.bash
nacltest.bash
race.bash
race.bat
run.bash
run.bat
run.rc