From: Austin Clements Date: Wed, 13 Apr 2016 19:12:32 +0000 (-0400) Subject: sync/atomic: don't atomically write pointers twice X-Git-Tag: go1.7beta1~669 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7c7081f514c9ec4820a842f7ef07394df4d41bab;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Michael Matloob Reviewed-by: Rick Hudson --- 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)) }