mirror of
https://github.com/golang/go
synced 2024-11-18 06:14:46 -07:00
runtime: move concurrent mark setup off system stack
For historical reasons we currently do a lot of the concurrent mark setup on the system stack. In fact, at this point the one and only thing that needs to happen on the system stack is the start-the-world. Clean up this code by lifting everything other than the start-the-world off the system stack. The diff for this change looks large, but the only code change is to narrow the systemstack call. Everything else is re-indentation. Change-Id: I1e03b8afc759fad726f2397b05a17d183c2713ce Reviewed-on: https://go-review.googlesource.com/16354 Reviewed-by: Rick Hudson <rlh@golang.org> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
1959621584
commit
3842596284
@ -1040,7 +1040,6 @@ func gc(mode gcMode) {
|
||||
gcController.startCycle()
|
||||
work.heapGoal = gcController.heapGoal
|
||||
|
||||
systemstack(func() {
|
||||
// Enter concurrent mark phase and enable
|
||||
// write barriers.
|
||||
//
|
||||
@ -1083,11 +1082,10 @@ func gc(mode gcMode) {
|
||||
atomicstore(&gcBlackenEnabled, 1)
|
||||
|
||||
// Concurrent mark.
|
||||
startTheWorldWithSema()
|
||||
systemstack(startTheWorldWithSema)
|
||||
now = nanotime()
|
||||
work.pauseNS += now - work.pauseStart
|
||||
gcController.assistStartTime = now
|
||||
})
|
||||
work.tMark = now
|
||||
|
||||
// Enable background mark workers and wait for
|
||||
|
Loading…
Reference in New Issue
Block a user