diff options
| author | Austin Clements <austin@google.com> | 2019-09-27 12:31:33 -0400 |
|---|---|---|
| committer | Austin Clements <austin@google.com> | 2019-10-25 23:25:31 +0000 |
| commit | 1b79afe460c329c1db75456c3278600a4b451b41 (patch) | |
| tree | 2db539f58c56812c100aee26dac2fda341c3ed79 /src/runtime/stack.go | |
| parent | 3f834114ab617eb7b414cb12e7ca8085b5fe3a5c (diff) | |
| download | go-1b79afe460c329c1db75456c3278600a4b451b41.tar.xz | |
runtime: remove old stack scanning code
This removes scang and preemptscan, since the stack scanning code now
uses suspendG.
For #10958, #24543.
Change-Id: Ic868bf5d6dcce40662a82cb27bb996cb74d0720e
Reviewed-on: https://go-review.googlesource.com/c/go/+/201138
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/runtime/stack.go')
| -rw-r--r-- | src/runtime/stack.go | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/src/runtime/stack.go b/src/runtime/stack.go index 3b92c89ff0..2c2a88e6e1 100644 --- a/src/runtime/stack.go +++ b/src/runtime/stack.go @@ -916,7 +916,7 @@ func round2(x int32) int32 { // Stack growth is multiplicative, for constant amortized cost. // // g->atomicstatus will be Grunning or Gscanrunning upon entry. -// If the GC is trying to stop this g then it will set preemptscan to true. +// If the scheduler is trying to stop this g, then it will set preemptStop. // // This must be nowritebarrierrec because it can be called as part of // stack growth from other nowritebarrierrec functions, but the @@ -1022,34 +1022,7 @@ func newstack() { preemptPark(gp) // never returns } - // Synchronize with scang. - casgstatus(gp, _Grunning, _Gwaiting) - if gp.preemptscan { - for !castogscanstatus(gp, _Gwaiting, _Gscanwaiting) { - // Likely to be racing with the GC as - // it sees a _Gwaiting and does the - // stack scan. If so, gcworkdone will - // be set and gcphasework will simply - // return. - } - if !gp.gcscandone { - // gcw is safe because we're on the - // system stack. - gcw := &gp.m.p.ptr().gcw - scanstack(gp, gcw) - gp.gcscandone = true - } - gp.preemptscan = false - gp.preempt = false - casfrom_Gscanstatus(gp, _Gscanwaiting, _Gwaiting) - // This clears gcscanvalid. - casgstatus(gp, _Gwaiting, _Grunning) - gp.stackguard0 = gp.stack.lo + _StackGuard - gogo(&gp.sched) // never return - } - // Act like goroutine called runtime.Gosched. - casgstatus(gp, _Gwaiting, _Grunning) gopreempt_m(gp) // never return } |
