]> Cypherpunks repositories - gostls13.git/commit
runtime: avoid tracking spans with no objects with mcentral
authorAustin Clements <austin@google.com>
Mon, 8 Oct 2018 17:51:10 +0000 (13:51 -0400)
committerAustin Clements <austin@google.com>
Tue, 9 Oct 2018 18:20:13 +0000 (18:20 +0000)
commit70d7e96c7850d141ae48e99f02a397aed1bc474b
tree3dc6e622c7f82ae479972ba5225eaca25ba22f78
parent7d2f46dacddba279c5b6b7520c7f6a475e6fffbc
runtime: avoid tracking spans with no objects with mcentral

Lazy mcache flushing (golang.org/cl/134783) made it so that moving a
span from an mcache to an mcentral was sometimes responsible for
sweeping the span. However, it did a "preserving" sweep, which meant
it retained ownership, even if the sweeper swept all objects in the
span. As a result, we could put a completely unused span back in the
mcentral.

Fix this by first taking back ownership of the span into the mcentral
and moving it to the right mcentral list, and then doing a
non-preserving sweep. The non-preserving sweep will move the span to
the heap if it sweeps all objects.

Change-Id: I244b1893b44b8c00264f0928ac9239449775f617
Reviewed-on: https://go-review.googlesource.com/c/140597
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/runtime/mcentral.go