]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: short-circuit bytes.Compare if src and dst are the same slice
authorKeith Randall <khr@golang.org>
Tue, 25 Aug 2015 03:58:19 +0000 (20:58 -0700)
committerKeith Randall <khr@golang.org>
Sat, 29 Aug 2015 02:43:57 +0000 (02:43 +0000)
Should only matter on ppc64 and ppc64le.

Fixes #11336

Change-Id: Id4b0ac28b573648e1aa98e87bf010f00d006b146
Reviewed-on: https://go-review.googlesource.com/13901
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
src/runtime/noasm.go

index 9a6dbeec3df9b1135faca58dff40ab5def7db3fe..218e121bf7685b45cdc00c730bad6b147cee7c58 100644 (file)
@@ -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
        }