mirror of
https://github.com/golang/go
synced 2024-11-12 10:20:27 -07:00
runtime: check pointer equality in arm cmpbody
Updates #11336 Follow the lead of amd64 do a pointer equality check before comparing string/byte contents on arm. BenchmarkCompareBytesEqual-4 208 211 +1.44% BenchmarkCompareBytesToNil-4 83.6 81.8 -2.15% BenchmarkCompareBytesEmpty-4 80.2 75.2 -6.23% BenchmarkCompareBytesIdentical-4 208 75.2 -63.85% BenchmarkCompareBytesSameLength-4 126 128 +1.59% BenchmarkCompareBytesDifferentLength-4 128 130 +1.56% BenchmarkCompareBytesBigUnaligned-4 14192804 14060971 -0.93% BenchmarkCompareBytesBig-4 12277313 12128193 -1.21% BenchmarkCompareBytesBigIdentical-4 9385046 78.5 -100.00% Change-Id: I5b24620018688c5fe04b6ff6743a24c4ce225788 Reviewed-on: https://go-review.googlesource.com/13881 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
b1eec186f2
commit
1135b9d671
@ -862,6 +862,8 @@ TEXT bytes·Compare(SB),NOSPLIT,$-4-28
|
||||
// On exit:
|
||||
// R4, R5, and R6 are clobbered
|
||||
TEXT runtime·cmpbody(SB),NOSPLIT,$-4-0
|
||||
CMP R2, R3
|
||||
BEQ samebytes
|
||||
CMP R0, R1
|
||||
MOVW R0, R6
|
||||
MOVW.LT R1, R6 // R6 is min(R0, R1)
|
||||
|
Loading…
Reference in New Issue
Block a user