Skip to content

Commit a1215dc

Browse files
committed
Ordered wait reasons for easier checks.
1 parent 824aa0c commit a1215dc

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
@@ -1060,24 +1060,24 @@ const (
10601060
waitReasonZero waitReason = iota // ""
10611061
waitReasonGCAssistMarking // "GC assist marking"
10621062
waitReasonIOWait // "IO wait"
1063-
waitReasonChanReceiveNilChan // "chan receive (nil chan)"
1064-
waitReasonChanSendNilChan // "chan send (nil chan)"
10651063
waitReasonDumpingHeap // "dumping heap"
10661064
waitReasonGarbageCollection // "garbage collection"
10671065
waitReasonGarbageCollectionScan // "garbage collection scan"
10681066
waitReasonPanicWait // "panicwait"
1069-
waitReasonSelect // "select"
1070-
waitReasonSelectNoCases // "select (no cases)"
10711067
waitReasonGCAssistWait // "GC assist wait"
10721068
waitReasonGCSweepWait // "GC sweep wait"
10731069
waitReasonGCScavengeWait // "GC scavenge wait"
1074-
waitReasonChanReceive // "chan receive"
1075-
waitReasonChanSend // "chan send"
10761070
waitReasonFinalizerWait // "finalizer wait"
10771071
waitReasonForceGCIdle // "force gc (idle)"
10781072
waitReasonUpdateGOMAXPROCSIdle // "GOMAXPROCS updater (idle)"
10791073
waitReasonSemacquire // "semacquire"
10801074
waitReasonSleep // "sleep"
1075+
waitReasonChanReceiveNilChan // "chan receive (nil chan)"
1076+
waitReasonChanSendNilChan // "chan send (nil chan)"
1077+
waitReasonSelect // "select"
1078+
waitReasonSelectNoCases // "select (no cases)"
1079+
waitReasonChanReceive // "chan receive"
1080+
waitReasonChanSend // "chan send"
10811081
waitReasonSyncCondWait // "sync.Cond.Wait"
10821082
waitReasonSyncMutexLock // "sync.Mutex.Lock"
10831083
waitReasonSyncRWMutexRLock // "sync.RWMutex.RLock"
@@ -1178,9 +1178,7 @@ func (w waitReason) isMutexWait() bool {
11781178
//
11791179
//go:nosplit
11801180
func (w waitReason) isSyncWait() bool {
1181-
return w == waitReasonSyncWaitGroupWait ||
1182-
w == waitReasonSyncCondWait ||
1183-
w.isMutexWait()
1181+
return waitReasonSyncCondWait <= w && w <= waitReasonSyncWaitGroupWait
11841182
}
11851183

11861184
func (w waitReason) isWaitingForSuspendG() bool {

0 commit comments

Comments
 (0)