Commit 3cbfcaa4 authored by Austin Clements's avatar Austin Clements

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: default avatarRick Hudson <rlh@golang.org>
parent bf9c71cb
......@@ -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)
......
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