Files
sdk/pkg/_fe_analyzer_shared/lib
Jens Johansen fac7b19029 [analyzer] [_fe_analyzer_shared] Add Stack.popNonNullableNewList; use in popTypedList2
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>
2026-03-24 04:21:46 -07:00
..