]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: move tSweepTerm capture closer to STW
authorAustin Clements <austin@google.com>
Tue, 18 Jul 2017 15:21:15 +0000 (11:21 -0400)
committerAustin Clements <austin@google.com>
Tue, 18 Jul 2017 16:13:05 +0000 (16:13 +0000)
tSweepTerm and pauseStart are supposed to be when STW was triggered,
but right now they're captured a bit before STW. Move these down to
immediately before we trigger STW.

Fixes #19590.

Change-Id: Icd48a5c4d45c9b36187ff986e4f178b5064556c1
Reviewed-on: https://go-review.googlesource.com/49612
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/mgc.go

index 705fe697bb449551d448b75ba7989945ae7d02e8..111fa781e1ddef67d5875123970e6554ca6c9cb5 100644 (file)
@@ -1248,13 +1248,13 @@ func gcStart(mode gcMode, trigger gcTrigger) {
 
        gcResetMarkState()
 
-       now := nanotime()
        work.stwprocs, work.maxprocs = gcprocs(), gomaxprocs
-       work.tSweepTerm = now
        work.heap0 = atomic.Load64(&memstats.heap_live)
        work.pauseNS = 0
        work.mode = mode
 
+       now := nanotime()
+       work.tSweepTerm = now
        work.pauseStart = now
        systemstack(stopTheWorldWithSema)
        // Finish sweep before we start concurrent scan.