]> Cypherpunks repositories - gostls13.git/commit
runtime: flush write barrier buffer to create work
authorAustin Clements <austin@google.com>
Fri, 3 Aug 2018 18:56:55 +0000 (14:56 -0400)
committerAustin Clements <austin@google.com>
Tue, 2 Oct 2018 20:35:15 +0000 (20:35 +0000)
commit9c634ea889fdfa41aec9183bd5693c155374ba76
tree1d697ba011021b0d87c8c7ecf36d00051946c17f
parent7db509e682891f3bc501c7b23e32e02c64893557
runtime: flush write barrier buffer to create work

Currently, if the gcWork runs out of work, we'll fall out of the GC
worker, even though flushing the write barrier buffer could produce
more work. While this is not a correctness issue, it can lead to
premature mark 2 or mark termination.

Fix this by flushing the write barrier buffer if the local gcWork runs
out of work and then checking the local gcWork again.

This reduces the number of premature mark terminations during all.bash
by about a factor of 10.

Updates #26903. This is preparation for eliminating mark 2.

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