From e25ef35254cc4372256d0c7f4521df3cf3d092bf Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Tue, 14 Aug 2018 17:08:27 -0400 Subject: [PATCH] runtime: don't disable GC work caching during mark termination Currently, we disable GC work caching during mark termination. This is no longer necessary with the new mark completion detection because 1. There's no way for any of the GC mark termination helpers to have any real work queued and, 2. Mark termination has to explicitly flush every P's buffers anyway in order to flush Ps that didn't run a GC mark termination helper. Hence, remove the code that disposes gcWork buffers during mark termination. Updates #26903. This is a follow-up to eliminating mark 2. Change-Id: I81f002ee25d5c10f42afd39767774636519007f9 Reviewed-on: https://go-review.googlesource.com/c/134320 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson --- src/runtime/mgc.go | 2 -- src/runtime/mgcmark.go | 5 ----- src/runtime/mwbbuf.go | 5 ----- 3 files changed, 12 deletions(-) diff --git a/src/runtime/mgc.go b/src/runtime/mgc.go index 69fd8df662..83d9a49a46 100644 --- a/src/runtime/mgc.go +++ b/src/runtime/mgc.go @@ -1931,7 +1931,6 @@ func gcMark(start_time int64) { } else { gcDrain(gcw, gcDrainNoBlock) } - gcw.dispose() if debug.gccheckmark > 0 { // This is expensive when there's a large number of @@ -2130,7 +2129,6 @@ func gchelper() { } else { gcDrain(gcw, gcDrainNoBlock) } - gcw.dispose() } nproc := atomic.Load(&work.nproc) // work.nproc can change right after we increment work.ndone diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go index 6c641e3fbf..b86b2d012e 100644 --- a/src/runtime/mgcmark.go +++ b/src/runtime/mgcmark.go @@ -1149,11 +1149,6 @@ func shade(b uintptr) { if obj, span, objIndex := findObject(b, 0, 0); obj != 0 { gcw := &getg().m.p.ptr().gcw greyobject(obj, 0, 0, span, gcw, objIndex) - if gcphase == _GCmarktermination { - // Ps aren't allowed to cache work during mark - // termination. - gcw.dispose() - } } } diff --git a/src/runtime/mwbbuf.go b/src/runtime/mwbbuf.go index 335b10f5b7..f35f7286ac 100644 --- a/src/runtime/mwbbuf.go +++ b/src/runtime/mwbbuf.go @@ -275,9 +275,4 @@ func wbBufFlush1(_p_ *p) { // Enqueue the greyed objects. gcw.putBatch(ptrs[:pos]) - if gcphase == _GCmarktermination { - // Ps aren't allowed to cache work during mark - // termination. - gcw.dispose() - } } -- 2.50.0