Skip to content

Commit f903068

Browse files
committed
Ordered wait reasons for easier checks.
1 parent 352dc0d commit f903068

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

11871185
func (w waitReason) isWaitingForSuspendG() bool {

0 commit comments

Comments
 (0)