diff options
author | Austin Clements <austin@google.com> | 2016-04-13 15:12:32 -0400 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2016-04-14 21:13:26 +0000 |
commit | 7c7081f514c9ec4820a842f7ef07394df4d41bab (patch) | |
tree | 77084525bf6b76f992fdedd32b089ad05149b23e /src/runtime/atomic_pointer.go | |
parent | 8f6c35de2f7c972a4f34efddd21281b7060c4457 (diff) | |
download | go-7c7081f514c9ec4820a842f7ef07394df4d41bab.tar.gz go-7c7081f514c9ec4820a842f7ef07394df4d41bab.zip |
sync/atomic: don't atomically write pointers twice
sync/atomic.StorePointer (which is implemented in
runtime/atomic_pointer.go) writes the pointer twice (through two
completely different code paths, no less). Fix it to only write once.
Change-Id: Id3b2aef9aa9081c2cf096833e001b93d3dd1f5da
Reviewed-on: https://go-review.googlesource.com/21999
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Diffstat (limited to 'src/runtime/atomic_pointer.go')
-rw-r--r-- | src/runtime/atomic_pointer.go | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/runtime/atomic_pointer.go b/src/runtime/atomic_pointer.go index ee55de13b9..4fe334014d 100644 --- a/src/runtime/atomic_pointer.go +++ b/src/runtime/atomic_pointer.go @@ -44,7 +44,6 @@ func sync_atomic_StoreUintptr(ptr *uintptr, new uintptr) //go:nosplit func sync_atomic_StorePointer(ptr *unsafe.Pointer, new unsafe.Pointer) { sync_atomic_StoreUintptr((*uintptr)(unsafe.Pointer(ptr)), uintptr(new)) - atomic.StorepNoWB(noescape(unsafe.Pointer(ptr)), new) writebarrierptr_nostore((*uintptr)(unsafe.Pointer(ptr)), uintptr(new)) } |