mirror of
https://github.com/golang/go
synced 2024-11-27 02:21:17 -07:00
[dev.garbage] runtime: eliminate heapBits.hasPointers
This is no longer necessary now that we can more efficiently consult the span's noscan bit. Change-Id: Id0b00b278533660973f45eb6efa5b00f373d58af Reviewed-on: https://go-review.googlesource.com/23701 Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
d491e550c3
commit
312aa09996
@ -505,17 +505,6 @@ func (h heapBits) isPointer() bool {
|
||||
return h.bits()&bitPointer != 0
|
||||
}
|
||||
|
||||
// hasPointers reports whether the given object has any pointers.
|
||||
// It must be told how large the object at h is for efficiency.
|
||||
// h must describe the initial word of the object.
|
||||
func (h heapBits) hasPointers(size uintptr) bool {
|
||||
// TODO: Use span.noScan instead of the heap bitmap.
|
||||
if size == sys.PtrSize { // 1-word objects are always pointers
|
||||
return true
|
||||
}
|
||||
return (*h.bitp>>h.shift)&bitMarked != 0
|
||||
}
|
||||
|
||||
// isCheckmarked reports whether the heap bits have the checkmarked bit set.
|
||||
// It must be told how large the object at h is, because the encoding of the
|
||||
// checkmark bit varies by size.
|
||||
|
@ -1227,7 +1227,7 @@ func greyobject(obj, base, off uintptr, hbits heapBits, span *mspan, gcw *gcWork
|
||||
atomic.Or8(mbits.bytep, mbits.mask)
|
||||
// If this is a noscan object, fast-track it to black
|
||||
// instead of greying it.
|
||||
if !hbits.hasPointers(span.elemsize) {
|
||||
if span.spanclass.noscan() {
|
||||
gcw.bytesMarked += uint64(span.elemsize)
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user