fac7b19029
When analyzing the CFE with StableAnalysis in AOT with GC disabled: * This CL reduces the combined cost of `popTypedList2` from ~501 million instructions to ~150 million instructions according to `valgrind --tool=callgrind`. * Total savings, via `valgrind --tool=callgrind`, is reported as ~359 million instructions. * Total savings, via `perf stat`, is reported as ~367 million instructions (see also below). A benchmark run with 5 runs each gives this (but note that the normal gc runs should mostly be ignored): With normal GC: ``` page-faults:u: 2.5544% +/- 0.0884% (4895.60 +/- 169.43) (191651.60 -> 196547.20) instructions:u: -1.7106% +/- 0.0039% (-990609348.00 +/- 2286578.79) (57909229892.40 -> 56918620544.40) branch-misses:u: -4.0211% +/- 2.2322% (-7537436.00 +/- 4184151.25) (187447442.80 -> 179910006.80) maxRssKbytes: -1.1530% +/- 0.0148% (-7169.60 +/- 91.81) (621801.60 -> 614632.00) maxRssBytes: -1.1530% +/- 0.0148% (-7341670.40 +/- 94008.95) (636724838.40 -> 629383168.00) Comparing GC data: Scavenge( new space) goes from 171 to 169 MarkSweep( promotion) goes from 17 to 16 MarkSweep( old space) goes from 0 to 1 Notice combined GC time goes from 3636 ms to 3507 ms (notice only 1 run each). ``` ``` With GC disabled: page-faults:u: -1.7322% +/- 0.0001% (-21490.20 +/- 1.49) (1240629.60 -> 1219139.40) instructions:u: -0.9185% +/- 0.0021% (-367119249.20 +/- 829664.80) (39970048410.80 -> 39602929161.60) maxRssKbytes: -1.7226% +/- 0.0012% (-85733.60 +/- 60.60) (4977076.00 -> 4891342.40) maxRssBytes: -1.7226% +/- 0.0012% (-87791206.40 +/- 62052.71) (5096525824.00 -> 5008734617.60) ``` Change-Id: I85eae091cc45d5fb2820fbd263d022619c9875f6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/490122 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Jens Johansen <jensj@google.com>