mirror of
https://github.com/golang/go
synced 2024-11-23 18:10:04 -07:00
runtime: simplify free count calculation in (un)cacheSpan
For unclear reasons, cacheSpan and uncacheSpan compute the number of elements in a span by dividing its size by the element size. This number is simply available in the mspan structure, so just use it. Change-Id: If2e5de6ecec39befd3324bf1da4a275ad000932f Reviewed-on: https://go-review.googlesource.com/c/138656 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
70d7e96c78
commit
416804f3e2
@ -117,8 +117,7 @@ havespan:
|
||||
if trace.enabled && !traceDone {
|
||||
traceGCSweepDone()
|
||||
}
|
||||
cap := int32((s.npages << _PageShift) / s.elemsize)
|
||||
n := cap - int32(s.allocCount)
|
||||
n := int(s.nelems) - int(s.allocCount)
|
||||
if n == 0 || s.freeindex == s.nelems || uintptr(s.allocCount) == s.nelems {
|
||||
throw("span has no free objects")
|
||||
}
|
||||
@ -168,8 +167,7 @@ func (c *mcentral) uncacheSpan(s *mspan) {
|
||||
atomic.Store(&s.sweepgen, sg)
|
||||
}
|
||||
|
||||
cap := int32((s.npages << _PageShift) / s.elemsize)
|
||||
n := cap - int32(s.allocCount)
|
||||
n := int(s.nelems) - int(s.allocCount)
|
||||
if n > 0 {
|
||||
// cacheSpan updated alloc assuming all objects on s
|
||||
// were going to be allocated. Adjust for any that
|
||||
|
Loading…
Reference in New Issue
Block a user