mirror of
https://github.com/golang/go
synced 2024-11-18 10:04:43 -07:00
runtime: move checknocurrentwbuf() from scanblock to drainworkbuf
Previously, scanblock called checknocurrentwbuf() after drainworkbuf(). Move this call into drainworkbuf so that every return path from drainworkbuf calls checknocurrentwbuf(). This is equivalent to the previous code because scanblock was the only caller of drainworkbuf. Change-Id: I96ef2168c8aa169bfc4d368f296342fa0fbeafb4 Reviewed-on: https://go-review.googlesource.com/4780 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
c4ee44b7b9
commit
c2de2f87f0
@ -452,7 +452,6 @@ func scanblock(b0, n0 uintptr, ptrmask *uint8, wbuf *workbuf) *workbuf {
|
||||
|
||||
drainallwbufs := b == 0
|
||||
drainworkbuf(wbuf, drainallwbufs)
|
||||
checknocurrentwbuf()
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -471,13 +470,12 @@ func drainworkbuf(wbuf *workbuf, drainallwbufs bool) {
|
||||
if wbuf.nobj == 0 {
|
||||
putempty(wbuf, 496)
|
||||
if !drainallwbufs {
|
||||
checknocurrentwbuf()
|
||||
return
|
||||
break
|
||||
}
|
||||
// Refill workbuf from global queue.
|
||||
wbuf = getfull(504)
|
||||
if wbuf == nil { // nil means out of work barrier reached
|
||||
return
|
||||
break
|
||||
}
|
||||
wbuf.checknonempty()
|
||||
}
|
||||
@ -501,6 +499,7 @@ func drainworkbuf(wbuf *workbuf, drainallwbufs bool) {
|
||||
// a performance hit as we keep fetching fresh wbufs.
|
||||
wbuf = scanobject(b, 0, nil, wbuf)
|
||||
}
|
||||
checknocurrentwbuf()
|
||||
}
|
||||
|
||||
// Scan count objects starting with those in wbuf.
|
||||
|
Loading…
Reference in New Issue
Block a user