mirror of https://github.com/golang/go.git
[dev.garbage] runtime: simplify nextFreeFast so it is inlined
nextFreeFast is currently not inlined by the compiler due to its size and complexity. This CL simplifies nextFreeFast by letting the slow path handle (nextFree) handle a corner cases. Change-Id: Ia9c5d1a7912bcb4bec072f5fd240f0e0bafb20e4 Reviewed-on: https://go-review.googlesource.com/22598 Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com>
This commit is contained in:
parent
b3579c095e
commit
e9eaa181fc
|
|
@ -495,14 +495,11 @@ func nextFreeFast(s *mspan) gclinkptr {
|
|||
if theBit < 64 {
|
||||
result := s.freeindex + uintptr(theBit)
|
||||
if result < s.nelems {
|
||||
s.allocCache >>= (theBit + 1)
|
||||
freeidx := result + 1
|
||||
if freeidx%64 == 0 && freeidx != s.nelems {
|
||||
// We just incremented s.freeindex so it isn't 0
|
||||
// so we are moving to the next aCache.
|
||||
whichByte := freeidx / 8
|
||||
s.refillAllocCache(whichByte)
|
||||
return 0
|
||||
}
|
||||
s.allocCache >>= (theBit + 1)
|
||||
s.freeindex = freeidx
|
||||
v := gclinkptr(result*s.elemsize + s.base())
|
||||
s.allocCount++
|
||||
|
|
|
|||
Loading…
Reference in New Issue