• Cherry Zhang's avatar
    cmd/compile: move write barrier insertion to SSA · 9ebf3d51
    Cherry Zhang authored
    When the compiler insert write barriers, the frontend makes
    conservative decisions at an early stage. This sometimes have
    false positives because of the lack of information, for example,
    writes on stack. SSA's writebarrier pass identifies writes on
    stack and eliminates write barriers for them.
    
    This CL moves write barrier insertion into SSA. The frontend no
    longer makes decisions about write barriers, and simply does
    normal assignments and emits normal Store ops when building SSA.
    SSA writebarrier pass inserts write barrier for Stores when needed.
    There, it has better information about the store because Phi and
    Copy propagation are done at that time.
    
    This CL only changes StoreWB to Store in gc/ssa.go. A followup CL
    simplifies SSA building code.
    
    Updates #17583.
    
    Change-Id: I4592d9bc0067503befc169c50b4e6f4765673bec
    Reviewed-on: https://go-review.googlesource.com/36839
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    9ebf3d51
Name
Last commit
Last update
..
builtin Loading commit data...
testdata Loading commit data...
alg.go Loading commit data...
align.go Loading commit data...
asm_test.go Loading commit data...
bexport.go Loading commit data...
bimport.go Loading commit data...
bitset.go Loading commit data...
builtin.go Loading commit data...
builtin_test.go Loading commit data...
bv.go Loading commit data...
checkcfg.go Loading commit data...
closure.go Loading commit data...
const.go Loading commit data...
constFold_test.go Loading commit data...
dcl.go Loading commit data...
esc.go Loading commit data...
export.go Loading commit data...
fixedbugs_test.go Loading commit data...
float_test.go Loading commit data...
fmt.go Loading commit data...
gen.go Loading commit data...
global_test.go Loading commit data...
go.go Loading commit data...
gsubr.go Loading commit data...
iface_test.go Loading commit data...
init.go Loading commit data...
inl.go Loading commit data...
lex.go Loading commit data...
lex_test.go Loading commit data...
logic_test.go Loading commit data...
main.go Loading commit data...
mkbuiltin.go Loading commit data...
mpfloat.go Loading commit data...
mpint.go Loading commit data...
noder.go Loading commit data...
obj.go Loading commit data...
opnames.go Loading commit data...
order.go Loading commit data...
pgen.go Loading commit data...
pgen_test.go Loading commit data...
phi.go Loading commit data...
plive.go Loading commit data...
racewalk.go Loading commit data...
range.go Loading commit data...
reflect.go Loading commit data...
reflect_test.go Loading commit data...
select.go Loading commit data...
shift_test.go Loading commit data...
sinit.go Loading commit data...
sizeof_test.go Loading commit data...
ssa.go Loading commit data...
ssa_test.go Loading commit data...
subr.go Loading commit data...
swt.go Loading commit data...
swt_test.go Loading commit data...
syntax.go Loading commit data...
timings.go Loading commit data...
trace.go Loading commit data...
type.go Loading commit data...
typecheck.go Loading commit data...
universe.go Loading commit data...
unsafe.go Loading commit data...
util.go Loading commit data...
walk.go Loading commit data...