mirror of
https://github.com/golang/go.git
synced 2025-05-28 02:41:30 +00:00
runtime: make mspan.isFree do what's on the tin
Currently mspan.isFree technically returns whether the object was not allocated *during this cycle*. Fix it so it actually returns whether or not the object is allocated so the method is more generally useful (especially for debugging). It has one caller, which is carefully written to be insensitive to this distinction, but this lets us simplify this caller. Change-Id: I9d79cf784a56015e434961733093c1d8d03fc091 Reviewed-on: https://go-review.googlesource.com/30145 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
bf9c71cb43
commit
3cbfcaa4ba
@ -474,7 +474,7 @@ func dumpobjs() {
|
||||
throw("freemark array doesn't have enough entries")
|
||||
}
|
||||
|
||||
for freeIndex := s.freeindex; freeIndex < s.nelems; freeIndex++ {
|
||||
for freeIndex := uintptr(0); freeIndex < s.nelems; freeIndex++ {
|
||||
if s.isFree(freeIndex) {
|
||||
freemark[freeIndex] = true
|
||||
}
|
||||
|
@ -264,7 +264,11 @@ func (s *mspan) nextFreeIndex() uintptr {
|
||||
return result
|
||||
}
|
||||
|
||||
// isFree returns whether the index'th object in s is unallocated.
|
||||
func (s *mspan) isFree(index uintptr) bool {
|
||||
if index < s.freeindex {
|
||||
return false
|
||||
}
|
||||
whichByte := index / 8
|
||||
whichBit := index % 8
|
||||
byteVal := *addb(s.allocBits, whichByte)
|
||||
|
Loading…
x
Reference in New Issue
Block a user