From 605c9feeb15d4e7c5a07d1170c1b8c38e9a265fe Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Sat, 30 Sep 2017 23:06:49 -0700 Subject: [PATCH] runtime: speed up stack copying a little MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Remove a branch and a stack spill. name old time/op new time/op delta StackCopy-8 79.2ms ± 1% 79.1ms ± 2% ~ (p=0.063 n=96+95) StackCopyNoCache-8 121ms ± 1% 120ms ± 2% -0.46% (p=0.000 n=97+88) Change-Id: Ifcbbb05d773178fad84cb11a9a6768ace69fcf24 Reviewed-on: https://go-review.googlesource.com/94029 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/runtime/symtab.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/runtime/symtab.go b/src/runtime/symtab.go index bdf98b9e9d..23d2232db5 100644 --- a/src/runtime/symtab.go +++ b/src/runtime/symtab.go @@ -853,13 +853,9 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool) if uvdelta&0x80 != 0 { n, uvdelta = readvarint(p) } + *val += int32(-(uvdelta & 1) ^ (uvdelta >> 1)) p = p[n:] - if uvdelta&1 != 0 { - uvdelta = ^(uvdelta >> 1) - } else { - uvdelta >>= 1 - } - vdelta := int32(uvdelta) + pcdelta := uint32(p[0]) n = 1 if pcdelta&0x80 != 0 { @@ -867,7 +863,6 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool) } p = p[n:] *pc += uintptr(pcdelta * sys.PCQuantum) - *val += vdelta return p, true } -- 2.50.0