diff --git a/pkg/dartdev/lib/src/commands/language_server.dart b/pkg/dartdev/lib/src/commands/language_server.dart index 65ec6280ead..684014eafaf 100644 --- a/pkg/dartdev/lib/src/commands/language_server.dart +++ b/pkg/dartdev/lib/src/commands/language_server.dart @@ -35,7 +35,8 @@ For more information about the server's capabilities and configuration, see: usageLineLength: dartdevUsageLineLength, includeHelpFlag: false, defaultToLsp: true, - ); + )..addFlag(_useAotSnapshotFlag, + help: 'Use the AOT analysis server snapshot', hide: true); } @override @@ -48,12 +49,20 @@ For more information about the server's capabilities and configuration, see: args = [...args, '--$protocol=$lsp']; } try { - VmInteropHandler.run( - sdk.analysisServerSnapshot, - args, - packageConfigOverride: null, - useExecProcess: false, - ); + if (argResults!.flag(_useAotSnapshotFlag)) { + args.remove('--$_useAotSnapshotFlag'); + VmInteropHandler.run( + sdk.dartAotRuntime, + [sdk.analysisServerAotSnapshot, ...args], + useExecProcess: true, + ); + } else { + VmInteropHandler.run( + sdk.analysisServerSnapshot, + args, + useExecProcess: false, + ); + } return 0; } catch (e, st) { log.stderr('Error: launching language analysis server failed'); @@ -64,4 +73,6 @@ For more information about the server's capabilities and configuration, see: return 255; } } + + static const _useAotSnapshotFlag = 'use-aot-snapshot'; } diff --git a/pkg/dartdev/lib/src/sdk.dart b/pkg/dartdev/lib/src/sdk.dart index a30a18173d9..ca2de5e7348 100644 --- a/pkg/dartdev/lib/src/sdk.dart +++ b/pkg/dartdev/lib/src/sdk.dart @@ -66,6 +66,10 @@ class Sdk { Platform.isWindows ? 'dartaotruntime.exe' : 'dartaotruntime', ); + String get analysisServerAotSnapshot => _snapshotPathFor( + 'analysis_server_aot.dart.snapshot', + ); + String get analysisServerSnapshot => _snapshotPathFor( 'analysis_server.dart.snapshot', ); diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 665c69632d4..93375ba6228 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -130,6 +130,11 @@ _platform_sdk_snapshots = [ ] if (dart_target_arch != "ia32" && dart_target_arch != "x86") { _platform_sdk_snapshots += [ + [ + "analysis_server_aot_product", + "../utils/analysis_server:analysis_server_aot_product", + "analysis_server_aot", + ], [ "frontend_server_aot_product", "../utils/kernel-service:frontend_server_aot_product",