diff options
| author | Austin Clements <austin@google.com> | 2017-06-15 12:23:09 -0400 |
|---|---|---|
| committer | Austin Clements <austin@google.com> | 2017-10-11 17:47:10 +0000 |
| commit | 12ec54724bcb016a70bcafa1bfc1d8f411fbfe74 (patch) | |
| tree | 100e75559a95d39dd1297c21fb6b887450b4cd68 /src/runtime | |
| parent | 4e8be99590d54cc9ea949d9eadc560a1c2456539 (diff) | |
| download | go-12ec54724bcb016a70bcafa1bfc1d8f411fbfe74.tar.xz | |
runtime: make m.nextwaitm an muintptr
This field is really a *m (modulo its bottom bit). Change it from
uintptr to muintptr to document this fact.
Change-Id: I2d181a955ef1d2c1a268edf20091b440d85726c9
Reviewed-on: https://go-review.googlesource.com/46034
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/lock_sema.go | 6 | ||||
| -rw-r--r-- | src/runtime/runtime2.go | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/runtime/lock_sema.go b/src/runtime/lock_sema.go index 68fcb564af..b41f805cee 100644 --- a/src/runtime/lock_sema.go +++ b/src/runtime/lock_sema.go @@ -71,7 +71,7 @@ Loop: // for this lock, chained through m->nextwaitm. // Queue this M. for { - gp.m.nextwaitm = v &^ locked + gp.m.nextwaitm = muintptr(v &^ locked) if atomic.Casuintptr(&l.key, v, uintptr(unsafe.Pointer(gp.m))|locked) { break } @@ -103,8 +103,8 @@ func unlock(l *mutex) { } else { // Other M's are waiting for the lock. // Dequeue an M. - mp = (*m)(unsafe.Pointer(v &^ locked)) - if atomic.Casuintptr(&l.key, v, mp.nextwaitm) { + mp = muintptr(v &^ locked).ptr() + if atomic.Casuintptr(&l.key, v, uintptr(mp.nextwaitm)) { // Dequeued an M. Wake it. semawakeup(mp) break diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 325152aea4..3f99de65d5 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -432,7 +432,7 @@ type m struct { fflag uint32 // floating point compare flags lockedExt uint32 // tracking for external LockOSThread lockedInt uint32 // tracking for internal lockOSThread - nextwaitm uintptr // next m waiting for lock + nextwaitm muintptr // next m waiting for lock waitunlockf unsafe.Pointer // todo go func(*g, unsafe.pointer) bool waitlock unsafe.Pointer waittraceev byte |
