mirror of https://github.com/golang/go.git
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: Keith Randall <khr@golang.org>
This commit is contained in:
parent
910d232a28
commit
605c9feeb1
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue