1
0
mirror of https://github.com/golang/go synced 2024-11-20 09:04:44 -07:00
go/src
Cherry Zhang f6aec889e1 cmd/compile: add a writebarrier phase in SSA
When the compiler insert write barriers, the frontend makes
conservative decisions at an early stage. This may have false
positives which result in write barriers for stack writes.

A new phase, writebarrier, is added to the SSA backend, to delay
the decision and eliminate false positives. The frontend still
makes conservative decisions. When building SSA, instead of
emitting runtime calls directly, it emits WB ops (StoreWB,
MoveWB, etc.), which will be expanded to branches and runtime
calls in writebarrier phase. Writes to static locations on stack
are detected and write barriers are removed.

All write barriers of stack writes found by the script from
issue #17330 are eliminated (except two false positives).

Fixes #17330.

Change-Id: I9bd66333da9d0ceb64dcaa3c6f33502798d1a0f8
Reviewed-on: https://go-review.googlesource.com/31131
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
2016-10-25 21:53:40 +00:00
..
archive archive/tar: validate sparse headers in parsePAX 2016-10-22 16:35:14 +00:00
bufio bufio: remove unnecessary "continue" 2016-10-24 14:49:44 +00:00
builtin
bytes
cmd cmd/compile: add a writebarrier phase in SSA 2016-10-25 21:53:40 +00:00
compress all: minor vet fixes 2016-10-24 17:27:37 +00:00
container
context
crypto crypto/tls: fix vet issues again 2016-10-25 14:27:48 +00:00
database/sql database/sql: fix possible context leak in test 2016-10-24 17:56:11 +00:00
debug
encoding encoding/json: fix bad formatting introduced in CL 20356 2016-10-24 20:37:52 +00:00
errors
expvar
flag
fmt
go go/types: match cmd/compile's alignment for complex64 2016-10-25 16:33:01 +00:00
hash
html html/template: add test case for unbounded template expansion 2016-10-24 15:44:30 +00:00
image image/color: improve speed of RGBA methods 2016-10-25 07:51:17 +00:00
index/suffixarray
internal syscall: use ERROR_IO_PENDING value in errnoErr 2016-10-22 23:05:01 +00:00
io
log log: document that log messages end in newlines 2016-10-24 15:32:38 +00:00
math math/cmplx: prevent infinite loop in tanSeries 2016-10-25 18:32:22 +00:00
mime
net net/http: add an interface for server push 2016-10-25 21:22:48 +00:00
os all: minor vet fixes 2016-10-24 17:27:37 +00:00
path path/filepath: make TestToNorm robust 2016-10-25 01:57:05 +00:00
plugin plugin: mention OS X support and concurrency 2016-10-19 17:24:19 +00:00
reflect all: minor vet fixes 2016-10-24 17:27:37 +00:00
regexp regexp: avoid alloc in QuoteMeta when not quoting 2016-10-19 07:09:08 +00:00
runtime runtime, syscall: appease vet 2016-10-25 15:11:54 +00:00
sort
strconv
strings
sync sync: throw, not panic, for unlock of unlocked mutex 2016-10-19 17:46:27 +00:00
syscall runtime, syscall: appease vet 2016-10-25 15:11:54 +00:00
testing testing/quick, text/tabwriter: freeze packages 2016-10-24 23:31:50 +00:00
text testing/quick, text/tabwriter: freeze packages 2016-10-24 23:31:50 +00:00
time
unicode
unsafe
vendor/golang_org/x vendor/golang_org/x/crypto/curve25519: update to f62085100e1abe3d5c9b3b8c9a38d50b71323f64 2016-10-21 21:33:30 +00:00
all.bash
all.bat
all.rc
androidtest.bash
bootstrap.bash
buildall.bash
clean.bash
clean.bat
clean.rc
cmp.bash
iostest.bash
make.bash
make.bat
Make.dist
make.rc
naclmake.bash
nacltest.bash
race.bash
race.bat
run.bash
run.bat
run.rc