From: Austin Clements Date: Sat, 22 Sep 2018 19:59:01 +0000 (-0400) Subject: runtime: remove redundant locking in mcache.refill X-Git-Tag: go1.12beta1~974 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2d23ece135076698ea4724b02f07d71d1f2145fb;p=gostls13.git runtime: remove redundant locking in mcache.refill 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 TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson --- diff --git a/src/runtime/mcache.go b/src/runtime/mcache.go index d0b007f915..8486f69569 100644 --- a/src/runtime/mcache.go +++ b/src/runtime/mcache.go @@ -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() {