mirror of
https://github.com/golang/go
synced 2024-09-30 12:08:32 -06:00
runtime: combine gcResetGState and gcResetMarkState
These functions are always called together and perform logically related state resets, so combine them in to just gcResetMarkState. Fixes #11427. Change-Id: I06c17ef65f66186494887a767b3993126955b5fe Reviewed-on: https://go-review.googlesource.com/16041 Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
b0d5e5c500
commit
3cd56b4dca
@ -987,7 +987,6 @@ func gc(mode gcMode) {
|
||||
// reclaimed until the next GC cycle.
|
||||
clearpools()
|
||||
|
||||
gcResetGState()
|
||||
gcResetMarkState()
|
||||
|
||||
work.finalizersDone = false
|
||||
@ -1150,7 +1149,6 @@ func gc(mode gcMode) {
|
||||
// Run a full stop-the-world mark using checkmark bits,
|
||||
// to check that we didn't forget to mark anything during
|
||||
// the concurrent mark process.
|
||||
gcResetGState() // Rescan stacks
|
||||
gcResetMarkState()
|
||||
initCheckmarks()
|
||||
gcMark(startTime)
|
||||
@ -1166,7 +1164,6 @@ func gc(mode gcMode) {
|
||||
// The g stacks have been scanned so
|
||||
// they have gcscanvalid==true and gcworkdone==true.
|
||||
// Reset these so that all stacks will be rescanned.
|
||||
gcResetGState()
|
||||
gcResetMarkState()
|
||||
finishsweep_m(true)
|
||||
|
||||
@ -1649,9 +1646,10 @@ func gcCopySpans() {
|
||||
unlock(&mheap_.lock)
|
||||
}
|
||||
|
||||
// gcResetGState resets the GC state of all G's. Any Gs created after
|
||||
// this will also be in this reset state.
|
||||
func gcResetGState() {
|
||||
// gcResetMarkState resets global state prior to marking (concurrent
|
||||
// or STW) and resets the stack scan state of all Gs. Any Gs created
|
||||
// after this will also be in the reset state.
|
||||
func gcResetMarkState() {
|
||||
// This may be called during a concurrent phase, so make sure
|
||||
// allgs doesn't change.
|
||||
lock(&allglock)
|
||||
@ -1661,12 +1659,7 @@ func gcResetGState() {
|
||||
gp.gcAssistBytes = 0
|
||||
}
|
||||
unlock(&allglock)
|
||||
}
|
||||
|
||||
// gcResetMarkState resets state prior to marking (concurrent or STW).
|
||||
//
|
||||
// TODO(austin): Merge with gcResetGState. See issue #11427.
|
||||
func gcResetMarkState() {
|
||||
work.bytesMarked = 0
|
||||
work.initialHeapLive = memstats.heap_live
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user