]> Cypherpunks repositories - gostls13.git/commit
runtime: clean up loops over allp
authorAustin Clements <austin@google.com>
Tue, 13 Jun 2017 16:01:56 +0000 (12:01 -0400)
committerAustin Clements <austin@google.com>
Wed, 27 Sep 2017 16:29:15 +0000 (16:29 +0000)
commite900e275e8667fde18973cdebe94861353162b87
treedffb246ff30d62faa7f86cd355f98fed508bf3ee
parentee55000f6c45d2f5c38d91679def933fdf27c029
runtime: clean up loops over allp

allp now has length gomaxprocs, which means none of allp[i] are nil or
in state _Pdead. This lets replace several different styles of loops
over allp with normal range loops.

for i := 0; i < gomaxprocs; i++ { ... } loops can simply range over
allp. Likewise, range loops over allp[:gomaxprocs] can just range over
allp.

Loops that check for p == nil || p.state == _Pdead don't need to check
this any more.

Loops that check for p == nil don't have to check this *if* dead Ps
don't affect them. I checked that all such loops are, in fact,
unaffected by dead Ps. One loop was potentially affected, which this
fixes by zeroing p.gcAssistTime in procresize.

Updates #15131.

Change-Id: Ifa1c2a86ed59892eca0610360a75bb613bc6dcee
Reviewed-on: https://go-review.googlesource.com/45575
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/mgc.go
src/runtime/mgcmark.go
src/runtime/mstats.go
src/runtime/proc.go
src/runtime/trace.go