[vm] Fix frontend_server after VmTarget move.

frontend_server uses getTarget - which means we need to call
installAdditionalTargets to ensure that flutter & vm targets are
properly installed.

Change-Id: I00a3d06f76c3bd31fe4e27e3947abea4c7883c44
Reviewed-on: https://dart-review.googlesource.com/69464
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
diff --git a/pkg/vm/lib/frontend_server.dart b/pkg/vm/lib/frontend_server.dart
index 992dccd..3a236e7 100644
--- a/pkg/vm/lib/frontend_server.dart
+++ b/pkg/vm/lib/frontend_server.dart
@@ -28,9 +28,11 @@
 import 'package:kernel/target/targets.dart';
 import 'package:path/path.dart' as path;
 import 'package:usage/uuid/uuid.dart';
+
 import 'package:vm/incremental_compiler.dart' show IncrementalCompiler;
 import 'package:vm/kernel_front_end.dart'
     show compileToKernel, parseCommandLineDefines;
+import 'package:vm/target/install.dart' show installAdditionalTargets;
 
 ArgParser argParser = new ArgParser(allowTrailingOptions: true)
   ..addFlag('train',
@@ -300,9 +302,16 @@
       return false;
     }
 
+    // Ensure that Flutter and VM targets are added to targets dictionary.
+    installAdditionalTargets();
+
     final TargetFlags targetFlags = new TargetFlags(
         strongMode: options['strong'], syncAsync: options['sync-async']);
     compilerOptions.target = getTarget(options['target'], targetFlags);
+    if (compilerOptions.target == null) {
+      print('Failed to create front-end target ${options['target']}.');
+      return false;
+    }
 
     final String importDill = options['import-dill'];
     if (importDill != null) {
diff --git a/pkg/vm/lib/target/install.dart b/pkg/vm/lib/target/install.dart
index adce65a..d6d40b2 100644
--- a/pkg/vm/lib/target/install.dart
+++ b/pkg/vm/lib/target/install.dart
@@ -14,10 +14,15 @@
 
 import 'package:vm/target/vm.dart' show VmTarget;
 
+bool _installed = false;
+
 void installAdditionalTargets() {
-  targets["dart_runner"] = (TargetFlags flags) => new DartRunnerTarget(flags);
-  targets["flutter"] = (TargetFlags flags) => new FlutterTarget(flags);
-  targets["flutter_runner"] =
-      (TargetFlags flags) => new FlutterRunnerTarget(flags);
-  targets["vm"] = (TargetFlags flags) => new VmTarget(flags);
+  if (!_installed) {
+    targets["dart_runner"] = (TargetFlags flags) => new DartRunnerTarget(flags);
+    targets["flutter"] = (TargetFlags flags) => new FlutterTarget(flags);
+    targets["flutter_runner"] =
+        (TargetFlags flags) => new FlutterRunnerTarget(flags);
+    targets["vm"] = (TargetFlags flags) => new VmTarget(flags);
+    _installed = true;
+  }
 }