• Matthew Dempsky's avatar
    cmd/compile: cleanup closure.go · eb3c44b2
    Matthew Dempsky authored
    The main thing is we now eagerly create the ODCLFUNC node for
    closures, immediately cross-link them, and assign fields (e.g., Nbody,
    Dcl, Parents, Marks) directly on the ODCLFUNC (previously they were
    assigned on the OCLOSURE and later moved to the ODCLFUNC).
    
    This allows us to set Curfn to the ODCLFUNC instead of the OCLOSURE,
    which makes things more consistent with normal function declarations.
    (Notably, this means Cvars now hang off the ODCLFUNC instead of the
    OCLOSURE.)
    
    Assignment of xfunc symbol names also now happens before typechecking
    their body, which means debugging output now provides a more helpful
    name than "<S>".
    
    In golang.org/cl/66810, we changed "x := y" statements to avoid
    creating false closure variables for x, but we still create them for
    struct literals like "s{f: x}". Update comment in capturevars
    accordingly.
    
    More opportunity for cleanups still, but this makes some substantial
    progress, IMO.
    
    Passes toolstash-check.
    
    Change-Id: I65a4efc91886e3dcd1000561348af88297775cd7
    Reviewed-on: https://go-review.googlesource.com/100197
    Run-TryBot: Matthew Dempsky <mdempsky@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
    eb3c44b2
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...
plugin 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 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...