diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go index 4c1150acd4..f2461f0cb0 100644 --- a/src/runtime/export_test.go +++ b/src/runtime/export_test.go @@ -483,6 +483,8 @@ func GetNextArenaHint() uintptr { type G = g +type Sudog = sudog + func Getg() *G { return getg() } diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 2c566b5424..1fe41cf5b2 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -349,9 +349,6 @@ type sudog struct { g *g - // isSelect indicates g is participating in a select, so - // g.selectDone must be CAS'd to win the wake-up race. - isSelect bool next *sudog prev *sudog elem unsafe.Pointer // data element (may point to stack) @@ -364,6 +361,11 @@ type sudog struct { acquiretime int64 releasetime int64 ticket uint32 + + // isSelect indicates g is participating in a select, so + // g.selectDone must be CAS'd to win the wake-up race. + isSelect bool + parent *sudog // semaRoot binary tree waitlink *sudog // g.waiting list or semaRoot waittail *sudog // semaRoot diff --git a/src/runtime/sizeof_test.go b/src/runtime/sizeof_test.go index 852244d425..d6156902c1 100644 --- a/src/runtime/sizeof_test.go +++ b/src/runtime/sizeof_test.go @@ -22,6 +22,7 @@ func TestSizeof(t *testing.T) { _64bit uintptr // size on 64bit platforms }{ {runtime.G{}, 216, 376}, // g, but exported for testing + {runtime.Sudog{}, 56, 88}, // sudog, but exported for testing } for _, tt := range tests {