]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: move checknocurrentwbuf() from scanblock to drainworkbuf
authorAustin Clements <austin@google.com>
Thu, 12 Feb 2015 20:00:54 +0000 (15:00 -0500)
committerAustin Clements <austin@google.com>
Fri, 13 Feb 2015 15:34:08 +0000 (15:34 +0000)
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>
src/runtime/mgc.go

index 4c7a6790a0973779486169755058a74d3e24ffe8..afca568e0bc9216fb47e4ad9ec5b9985cd44d360 100644 (file)
@@ -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.