Skip to content

Commit 3435d54

Browse files
committed
Ordered wait reasons for easier checks.
1 parent f2da77a commit 3435d54

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

11881186
func (w waitReason) isWaitingForSuspendG() bool {

0 commit comments

Comments
 (0)