Commit 605c9fee authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

runtime: speed up stack copying a little

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 <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarKeith Randall <khr@golang.org>
parent 910d232a
...@@ -853,13 +853,9 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool) ...@@ -853,13 +853,9 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool)
if uvdelta&0x80 != 0 { if uvdelta&0x80 != 0 {
n, uvdelta = readvarint(p) n, uvdelta = readvarint(p)
} }
*val += int32(-(uvdelta & 1) ^ (uvdelta >> 1))
p = p[n:] p = p[n:]
if uvdelta&1 != 0 {
uvdelta = ^(uvdelta >> 1)
} else {
uvdelta >>= 1
}
vdelta := int32(uvdelta)
pcdelta := uint32(p[0]) pcdelta := uint32(p[0])
n = 1 n = 1
if pcdelta&0x80 != 0 { if pcdelta&0x80 != 0 {
...@@ -867,7 +863,6 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool) ...@@ -867,7 +863,6 @@ func step(p []byte, pc *uintptr, val *int32, first bool) (newp []byte, ok bool)
} }
p = p[n:] p = p[n:]
*pc += uintptr(pcdelta * sys.PCQuantum) *pc += uintptr(pcdelta * sys.PCQuantum)
*val += vdelta
return p, true return p, true
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment