go/src/cmd/compile/internal/arm
Ian Lance Taylor b66a892358 cmd/compile: change Func.{Dcl,Inldcl} from NodeList to slice
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/19919
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-02-26 20:43:23 +00:00
..
cgen.go cmd/compile/internal: some janitoring 2015-09-07 17:42:48 +00:00
cgen64.go cmd/compile/internal: named types for Etype and Op in struct Node 2015-10-30 20:12:37 +00:00
galign.go cmd/compile/internal: slice/map literals janitoring 2015-09-04 15:27:59 +00:00
ggen.go cmd/compile: change Func.{Dcl,Inldcl} from NodeList to slice 2016-02-26 20:43:23 +00:00
gsubr.go cmd/compile/internal: named types for Etype and Op in struct Node 2015-10-30 20:12:37 +00:00
peep.go cmd/compile: add AVARLIVE to peep for arm, arm64, mips64, ppc64 2016-01-14 02:04:50 +00:00
prog.go all: fix typos 2016-02-23 13:58:47 +00:00
reg.go