aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/atomic_pointer.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2016-04-13 15:12:32 -0400
committerAustin Clements <austin@google.com>2016-04-14 21:13:26 +0000
commit7c7081f514c9ec4820a842f7ef07394df4d41bab (patch)
tree77084525bf6b76f992fdedd32b089ad05149b23e /src/runtime/atomic_pointer.go
parent8f6c35de2f7c972a4f34efddd21281b7060c4457 (diff)
downloadgo-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.go1
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))
}