Commit c2de2f87 authored by Austin Clements's avatar Austin Clements

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/4780Reviewed-by: default avatarRuss Cox <rsc@golang.org>
Reviewed-by: default avatarRick Hudson <rlh@golang.org>
parent c4ee44b7
......@@ -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.
......
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