Skip to content

Commit a672db8

Browse files
committed
Ordered wait reasons for easier checks.
1 parent c902ec6 commit a672db8

File tree

2 files changed

+8
-20
lines changed

2 files changed

+8
-20
lines changed

src/runtime/mgcmark.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,7 @@ func gcUnmask(p unsafe.Pointer) unsafe.Pointer {
8383
//go:nosplit
8484
func (gp *g) internalBlocked() bool {
8585
reason := gp.waitreason
86-
return reason != waitReasonChanReceive &&
87-
reason != waitReasonSyncWaitGroupWait &&
88-
reason != waitReasonChanSend &&
89-
reason != waitReasonChanReceiveNilChan &&
90-
reason != waitReasonChanSendNilChan &&
91-
reason != waitReasonSelect &&
92-
reason != waitReasonSelectNoCases &&
93-
reason != waitReasonSyncMutexLock &&
94-
reason != waitReasonSyncRWMutexRLock &&
95-
reason != waitReasonSyncRWMutexLock &&
96-
reason != waitReasonSyncCondWait
86+
return reason < waitReasonChanReceiveNilChan || waitReasonSyncWaitGroupWait < reason
9787
}
9888

9989
// The world must be stopped or allglock must be held.

src/runtime/runtime2.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,24 +1069,24 @@ const (
10691069
waitReasonZero waitReason = iota // ""
10701070
waitReasonGCAssistMarking // "GC assist marking"
10711071
waitReasonIOWait // "IO wait"
1072-
waitReasonChanReceiveNilChan // "chan receive (nil chan)"
1073-
waitReasonChanSendNilChan // "chan send (nil chan)"
10741072
waitReasonDumpingHeap // "dumping heap"
10751073
waitReasonGarbageCollection // "garbage collection"
10761074
waitReasonGarbageCollectionScan // "garbage collection scan"
10771075
waitReasonPanicWait // "panicwait"
1078-
waitReasonSelect // "select"
1079-
waitReasonSelectNoCases // "select (no cases)"
10801076
waitReasonGCAssistWait // "GC assist wait"
10811077
waitReasonGCSweepWait // "GC sweep wait"
10821078
waitReasonGCScavengeWait // "GC scavenge wait"
1083-
waitReasonChanReceive // "chan receive"
1084-
waitReasonChanSend // "chan send"
10851079
waitReasonFinalizerWait // "finalizer wait"
10861080
waitReasonForceGCIdle // "force gc (idle)"
10871081
waitReasonUpdateGOMAXPROCSIdle // "GOMAXPROCS updater (idle)"
10881082
waitReasonSemacquire // "semacquire"
10891083
waitReasonSleep // "sleep"
1084+
waitReasonChanReceiveNilChan // "chan receive (nil chan)"
1085+
waitReasonChanSendNilChan // "chan send (nil chan)"
1086+
waitReasonSelect // "select"
1087+
waitReasonSelectNoCases // "select (no cases)"
1088+
waitReasonChanReceive // "chan receive"
1089+
waitReasonChanSend // "chan send"
10901090
waitReasonSyncCondWait // "sync.Cond.Wait"
10911091
waitReasonSyncMutexLock // "sync.Mutex.Lock"
10921092
waitReasonSyncRWMutexRLock // "sync.RWMutex.RLock"
@@ -1187,9 +1187,7 @@ func (w waitReason) isMutexWait() bool {
11871187
//
11881188
//go:nosplit
11891189
func (w waitReason) isSyncWait() bool {
1190-
return w == waitReasonSyncWaitGroupWait ||
1191-
w == waitReasonSyncCondWait ||
1192-
w.isMutexWait()
1190+
return waitReasonSyncCondWait <= w && w <= waitReasonSyncWaitGroupWait
11931191
}
11941192

11951193
func (w waitReason) isWaitingForSuspendG() bool {

0 commit comments

Comments
 (0)