• Ian Lance Taylor's avatar
    cmd/compile: change Func.{Dcl,Inldcl} from NodeList to slice · b66a8923
    Ian Lance Taylor authored
    A slice uses less memory than a NodeList, and has better memory locality
    when walking the list.
    
    This uncovered a tricky case involving closures: the escape analysis
    pass when run on a closure was appending to the Dcl list of the OCLOSURE
    rather than the ODCLFUNC.  This happened to work because they shared the
    same NodeList.  Fixed with a change to addrescapes, and a check to
    Tempname to catch any recurrences.
    
    This removes the last use of the listsort function outside of tests.
    I'll send a separate CL to remove it.
    
    Unfortunately, while this passes all tests, it does not pass toolstash
    -cmp.  The problem is that cmpstackvarlt does not fully determine the
    sort order, and the change from listsort to sort.Sort, while generally
    desirable, produces a different ordering.  I could stage this by first
    making cmpstackvarlt fully determined, but no matter what toolstash -cmp
    is going to break at some point.
    
    In my casual testing the compiler is 2.2% faster.
    
    Update #14473.
    
    Change-Id: I367d66daa4ec73ed95c14c66ccda3a2133ad95d5
    Reviewed-on: https://go-review.googlesource.com/19919Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    b66a8923
Name
Last commit
Last update
..
cgen.go Loading commit data...
cgen64.go Loading commit data...
galign.go Loading commit data...
ggen.go Loading commit data...
gsubr.go Loading commit data...
peep.go Loading commit data...
prog.go Loading commit data...
reg.go Loading commit data...