• Russ Cox's avatar
    runtime, sync/atomic: add write barrier for atomic write of pointer · 7b4df8f0
    Russ Cox authored
    Add write barrier to atomic operations manipulating pointers.
    
    In general an atomic write of a pointer word may indicate racy accesses,
    so there is no strictly safe way to attempt to keep the shadow copy
    in sync with the real one. Instead, mark the shadow copy as not used.
    
    Redirect sync/atomic pointer routines back to the runtime ones,
    so that there is only one copy of the write barrier and shadow logic.
    In time we might consider doing this for most of the sync/atomic
    functions, but for now only the pointer routines need that treatment.
    
    Found with GODEBUG=wbshadow=1 mode.
    Eventually that will run automatically, but right now
    it still detects other missing write barriers.
    
    Change-Id: I852936b9a111a6cb9079cfaf6bd78b43016c0242
    Reviewed-on: https://go-review.googlesource.com/2066Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
    Reviewed-by: 's avatarAustin Clements <austin@google.com>
    7b4df8f0
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal/syscall Loading commit data...
io Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
liblink Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...