From d7e7abbcc2dfac04861e257a35d5e6314f27e182 Mon Sep 17 00:00:00 2001 From: jensjoha Date: Mon, 15 Jan 2018 15:59:57 +0100 Subject: [PATCH] Train frontend_server snapshot (flutter/engine#4512) Cuts 30% from hot-reload benchmarks with `--preview-dart-2` --- engine/src/flutter/frontend_server/BUILD.gn | 3 ++- engine/src/flutter/frontend_server/lib/server.dart | 11 +++++++++++ .../src/flutter/frontend_server/test/server_test.dart | 6 ++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/frontend_server/BUILD.gn b/engine/src/flutter/frontend_server/BUILD.gn index cebe1ec7b02..860ddc90003 100644 --- a/engine/src/flutter/frontend_server/BUILD.gn +++ b/engine/src/flutter/frontend_server/BUILD.gn @@ -7,7 +7,8 @@ import("//third_party/dart/utils/application_snapshot.gni") application_snapshot("frontend_server") { main_dart = "bin/starter.dart" dot_packages = rebase_path(".packages") - training_args = [ "--train" ] + flutter_patched_sdk = rebase_path("$root_out_dir/flutter_patched_sdk") + training_args = [ "--train", "--sdk-root=$flutter_patched_sdk" ] frontend_server_files = exec_script("//third_party/dart/tools/list_dart_files.py", [ "absolute", rebase_path("."), ], "list lines") diff --git a/engine/src/flutter/frontend_server/lib/server.dart b/engine/src/flutter/frontend_server/lib/server.dart index 3fce388e3d0..40906c23e29 100644 --- a/engine/src/flutter/frontend_server/lib/server.dart +++ b/engine/src/flutter/frontend_server/lib/server.dart @@ -261,6 +261,17 @@ Future starter( } if (options['train']) { + final String sdkRoot = options['sdk-root']; + options = _argParser.parse(['--incremental', '--sdk-root=$sdkRoot']); + compiler ??= new _FrontendCompiler(output, printerFactory: binaryPrinterFactory); + await compiler.compile(Platform.script.toFilePath(), options, generator: generator); + compiler.acceptLastDelta(); + await compiler.recompileDelta(); + compiler.acceptLastDelta(); + await compiler.recompileDelta(); + compiler.acceptLastDelta(); + await compiler.recompileDelta(); + compiler.acceptLastDelta(); return 0; } diff --git a/engine/src/flutter/frontend_server/test/server_test.dart b/engine/src/flutter/frontend_server/test/server_test.dart index 1d2d215905b..513909e7319 100644 --- a/engine/src/flutter/frontend_server/test/server_test.dart +++ b/engine/src/flutter/frontend_server/test/server_test.dart @@ -26,8 +26,10 @@ class _MockedBinaryPrinter extends Mock implements BinaryPrinter {} Future main() async { group('basic', () { - test('train completes', () async { - expect(await starter(['--train']), equals(0)); + final CompilerInterface compiler = new _MockedCompiler(); + + test('train with mocked compiler completes', () async { + expect(await starter(['--train'], compiler: compiler), equals(0)); }); });