• Keith Randall's avatar
    cmd/compile: keep pointer input arguments live throughout function · 3572c641
    Keith Randall authored
    Introduce a KeepAlive op which makes sure that its argument is kept
    live until the KeepAlive.  Use KeepAlive to mark pointer input
    arguments as live after each function call and at each return.
    
    We do this change only for pointer arguments.  Those are the
    critical ones to handle because they might have finalizers.
    Doing compound arguments (slices, structs, ...) is more complicated
    because we would need to track field liveness individually (we do
    that for auto variables now, but inputs requires extra trickery).
    
    Turn off the automatic marking of args as live.  That way, when args
    are explicitly nulled, plive will know that the original argument is
    dead.
    
    The KeepAlive op will be the eventual implementation of
    runtime.KeepAlive.
    
    Fixes #15277
    
    Change-Id: I5f223e65d99c9f8342c03fbb1512c4d363e903e5
    Reviewed-on: https://go-review.googlesource.com/22365Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    3572c641
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...
context 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 Loading commit data...
io 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...
vendor/golang.org/x/net 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...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash 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...