]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: remove redundant locking in mcache.refill
authorAustin Clements <austin@google.com>
Sat, 22 Sep 2018 19:59:01 +0000 (15:59 -0400)
committerAustin Clements <austin@google.com>
Fri, 28 Sep 2018 18:39:43 +0000 (18:39 +0000)
mcache.refill acquires g.m.locks, which is pointless because the
caller itself absolutely must have done so already to prevent
ownership of mcache from shifting.

Also, mcache.refill's documentation is generally a bit out-of-date, so
this cleans this up.

Change-Id: Idc8de666fcaf3c3d96006bd23a8f307539587d6c
Reviewed-on: https://go-review.googlesource.com/138195
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
src/runtime/mcache.go

index d0b007f915e7653f71f3266aa0b729db4da615a5..8486f69569ef39b6d2712325d8986156b8585866 100644 (file)
@@ -101,12 +101,12 @@ func freemcache(c *mcache) {
        })
 }
 
-// Gets a span that has a free object in it and assigns it
-// to be the cached span for the given sizeclass. Returns this span.
+// refill acquires a new span of span class spc for c. This span will
+// have at least one free object. The current span in c must be full.
+//
+// Must run in a non-preemptible context since otherwise the owner of
+// c could change.
 func (c *mcache) refill(spc spanClass) {
-       _g_ := getg()
-
-       _g_.m.locks++
        // Return the current cached span to the central lists.
        s := c.alloc[spc]
 
@@ -129,7 +129,6 @@ func (c *mcache) refill(spc spanClass) {
        }
 
        c.alloc[spc] = s
-       _g_.m.locks--
 }
 
 func (c *mcache) releaseAll() {