86641d07ae
Previously, generated bytecode was cached using metadata in kernel AST. When serializaing kernel AST (for subsequent compilations) incremental serialization was not used, so AST serialization was considerably slower in bytecode mode compared to non-bytecode mode. Apparently, metadata is not compatible with incremental serialization (https://github.com/dart-lang/sdk/issues/39302). This change reimplements caching of generated bytecode using a separate 'foo.dill.cache' file near the generated 'foo.dill' and 'foo.dill.ast'. AST is now written using incremental serialization both in bytecode and non-bytecode modes. flutter_test_performance benchmark: AST mode: "without_change_elapsed_time_ms": 2615-2652, "implementation_change_elapsed_time_ms": 6292-6394, "interface_change_elapsed_time_ms": 6183-6484, "with_coverage_time_ms": 2723-2834 Bytecode mode, before this change: "without_change_elapsed_time_ms": 3246-3295, "implementation_change_elapsed_time_ms": 7998-8068, "interface_change_elapsed_time_ms": 7899-8029, "with_coverage_time_ms": 3316-3378 Bytecode mode, after this change: "without_change_elapsed_time_ms": 2689-2737, "implementation_change_elapsed_time_ms": 7630-7677, "interface_change_elapsed_time_ms": 7724-7917, "with_coverage_time_ms": 2841-2949 Change-Id: I603d33f49949146cf6620226d810f2f3cb9853a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124592 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>