From: Keith Randall Date: Tue, 25 Aug 2015 03:58:19 +0000 (-0700) Subject: runtime: short-circuit bytes.Compare if src and dst are the same slice X-Git-Tag: go1.6beta1~1236 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=805e56ef474a8abfc4ec4159bea0c1fb584e67ed;p=gostls13.git runtime: short-circuit bytes.Compare if src and dst are the same slice Should only matter on ppc64 and ppc64le. Fixes #11336 Change-Id: Id4b0ac28b573648e1aa98e87bf010f00d006b146 Reviewed-on: https://go-review.googlesource.com/13901 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Dave Cheney --- diff --git a/src/runtime/noasm.go b/src/runtime/noasm.go index 9a6dbeec3d..218e121bf7 100644 --- a/src/runtime/noasm.go +++ b/src/runtime/noasm.go @@ -39,6 +39,9 @@ func bytes_Compare(s1, s2 []byte) int { if len(s2) < l { l = len(s2) } + if l == 0 || &s1[0] == &s2[0] { + goto samebytes + } for i := 0; i < l; i++ { c1, c2 := s1[i], s2[i] if c1 < c2 { @@ -48,6 +51,7 @@ func bytes_Compare(s1, s2 []byte) int { return +1 } } +samebytes: if len(s1) < len(s2) { return -1 }