Files
sdk/pkg/compiler/test/serialization
Nate Biggs 839f890f13 [dart2js] Improve dump info scalability.
Isolates data needed from emitter phase for dump info task. The new DumpInfoProgramData captures only the necessary data and allows it to be serialized so that dump info can be run independently of the emitter task.

This change also ends up improving the combined emitter and dump info task. By processing the JS AST and extracting out the relevant info up front, the AST is able to be GCed before the dump info task runs. In local runs on a big app this resulted in ~1.4GB less ram being.

Runtime stat comparison:
Without --dump-info: 117s 5.4GB

Before with --dump-info: 205s 18.3GB
Before with --dump-info=binary: 148s 9.9GB

After with --dump-info: 205s 16.9GB
After with --dump-info=binary: 150s 7.5GB

After with --dump-info-write: 132s 6.2GB
After with --dump-info-read: 118s 14.8GB
After with --dump-info-read --dump-info=binary: 67.9s 5.5GB

By providing the new "--dump-info-write-uri=URI" a binary file will be written with the necessary dump info data. Then if Dart2JS is invoked with the same parameters and "--dump-info-read-uri=URI" then the compiler will skip generating/emitting JS and use the output file to generate the info dump. The existing invocation of just adding "--dump-info" works as before.

I also had the goal of removing DumpInfoTask dependencies on other parts of the compiler and vice versa.

Change-Id: I3f40b0136eb77a709c49737607a2ad6127127e49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/322843
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2023-08-29 02:35:37 +00:00
..