mirror of
https://github.com/golang/go
synced 2024-11-23 20:20:01 -07:00
runtime: tricky replacements of _g_ in mgc.go
getg() is used primarily for gp.m, so use mp. gp.m.curg is also used, name that curgp. Change-Id: I9db2dc4adce2b17d6b41c60d4f2dfbc9aa41fac1 Reviewed-on: https://go-review.googlesource.com/c/go/+/418578 Run-TryBot: Michael Pratt <mpratt@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
e9d7f54a1a
commit
222799fde6
@ -929,11 +929,10 @@ func gcMarkTermination() {
|
||||
|
||||
mp := acquirem()
|
||||
mp.preemptoff = "gcing"
|
||||
_g_ := getg()
|
||||
_g_.m.traceback = 2
|
||||
gp := _g_.m.curg
|
||||
casgstatus(gp, _Grunning, _Gwaiting)
|
||||
gp.waitreason = waitReasonGarbageCollection
|
||||
mp.traceback = 2
|
||||
curgp := mp.curg
|
||||
casgstatus(curgp, _Grunning, _Gwaiting)
|
||||
curgp.waitreason = waitReasonGarbageCollection
|
||||
|
||||
// Run gc on the g0 stack. We do this so that the g stack
|
||||
// we're currently running on will no longer change. Cuts
|
||||
@ -972,8 +971,8 @@ func gcMarkTermination() {
|
||||
gcSweep(work.mode)
|
||||
})
|
||||
|
||||
_g_.m.traceback = 0
|
||||
casgstatus(gp, _Gwaiting, _Grunning)
|
||||
mp.traceback = 0
|
||||
casgstatus(curgp, _Gwaiting, _Grunning)
|
||||
|
||||
if trace.enabled {
|
||||
traceGCDone()
|
||||
|
Loading…
Reference in New Issue
Block a user