diff --git a/pkg/front_end/lib/src/base/libraries_specification.dart b/pkg/front_end/lib/src/base/libraries_specification.dart
index 6ddc5c5..28c95fe 100644
--- a/pkg/front_end/lib/src/base/libraries_specification.dart
+++ b/pkg/front_end/lib/src/base/libraries_specification.dart
@@ -106,10 +106,16 @@
   const LibrariesSpecification(
       [this._targets = const <String, TargetLibrariesSpecification>{}]);
 
-  /// The library specification for a given [target], or null if none is
+  /// The library specification for a given [target], or throws if none is
   /// available.
-  TargetLibrariesSpecification specificationFor(String target) =>
-      _targets[target];
+  TargetLibrariesSpecification specificationFor(String target) {
+    var targetSpec = _targets[target];
+    if (targetSpec == null) {
+      throw new LibrariesSpecificationException(
+        'No library specification for target "$target"');
+    }
+    return targetSpec;
+  }
 
   /// Parse the given [json] as a library specification, resolving any relative
   /// paths from [baseUri].
diff --git a/pkg/front_end/tool/_fasta/compile_platform.dart b/pkg/front_end/tool/_fasta/compile_platform.dart
index 5629776..d541fd7 100644
--- a/pkg/front_end/tool/_fasta/compile_platform.dart
+++ b/pkg/front_end/tool/_fasta/compile_platform.dart
@@ -9,7 +9,10 @@
 import 'dart:io' show File, Platform, exitCode;
 
 import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
-import 'package:vm/target/runner.dart' show RunnerTarget;
+
+import 'package:vm/target/dart_runner.dart' show DartRunnerTarget;
+
+import 'package:vm/target/flutter_runner.dart' show FlutterRunnerTarget;
 
 import 'package:kernel/target/targets.dart' show TargetFlags, targets;
 
@@ -36,7 +39,9 @@
 
 Future main(List<String> arguments) async {
   targets["dart2js"] = (TargetFlags flags) => new Dart2jsTarget(flags);
-  targets["runner"] = (TargetFlags flags) => new RunnerTarget(flags);
+  targets["dart_runner"] = (TargetFlags flags) => new DartRunnerTarget(flags);
+  targets["flutter_runner"] =
+      (TargetFlags flags) => new FlutterRunnerTarget(flags);
   for (int i = 0; i < iterations; i++) {
     if (i > 0) {
       print("\n");
diff --git a/pkg/vm/lib/target/runner.dart b/pkg/vm/lib/target/dart_runner.dart
similarity index 83%
rename from pkg/vm/lib/target/runner.dart
rename to pkg/vm/lib/target/dart_runner.dart
index 3b7ce0c..fe75c94 100644
--- a/pkg/vm/lib/target/runner.dart
+++ b/pkg/vm/lib/target/dart_runner.dart
@@ -1,16 +1,19 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.runner;
+library kernel.target.dart_runner;
 
 import 'package:kernel/target/targets.dart';
 import 'package:kernel/target/vm.dart' show VmTarget;
 
-class RunnerTarget extends VmTarget {
-  RunnerTarget(TargetFlags flags) : super(flags);
+class DartRunnerTarget extends VmTarget {
+  DartRunnerTarget(TargetFlags flags) : super(flags);
 
   @override
-  String get name => 'runner';
+  String get name => 'dart_runner';
+
+  @override
+  bool get enableSuperMixins => true;
 
   // This is the order that bootstrap libraries are loaded according to
   // `runtime/vm/object_store.h`.
diff --git a/pkg/vm/lib/target/runner.dart b/pkg/vm/lib/target/flutter_runner.dart
similarity index 76%
copy from pkg/vm/lib/target/runner.dart
copy to pkg/vm/lib/target/flutter_runner.dart
index 3b7ce0c..8878c01 100644
--- a/pkg/vm/lib/target/runner.dart
+++ b/pkg/vm/lib/target/flutter_runner.dart
@@ -1,16 +1,19 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.runner;
+library kernel.target.flutter_runner;
 
 import 'package:kernel/target/targets.dart';
 import 'package:kernel/target/vm.dart' show VmTarget;
 
-class RunnerTarget extends VmTarget {
-  RunnerTarget(TargetFlags flags) : super(flags);
+class FlutterRunnerTarget extends VmTarget {
+  FlutterRunnerTarget(TargetFlags flags) : super(flags);
 
   @override
-  String get name => 'runner';
+  String get name => 'flutter_runner';
+
+  @override
+  bool get enableSuperMixins => true;
 
   // This is the order that bootstrap libraries are loaded according to
   // `runtime/vm/object_store.h`.
@@ -33,10 +36,12 @@
         'dart:nativewrappers',
         'dart:io',
 
-        // Required for dart_runner.
+        // Required for flutter_runner.
         'dart:fuchsia.builtin',
         'dart:zircon',
         'dart:fuchsia',
         'dart:vmservice_io',
+        'dart:ui',
+        'dart:mozart.internal',
       ];
 }
diff --git a/tools/copy_tree.py b/tools/copy_tree.py
index a9925b4..5d72750 100755
--- a/tools/copy_tree.py
+++ b/tools/copy_tree.py
@@ -82,7 +82,7 @@
       errors.append((srcname, dstname, str(why)))
     # catch the Error from the recursive CopyTree so that we can
     # continue with other files
-    except Error as err:
+    except Exception as err:
       errors.extend(err.args[0])
   try:
     shutil.copystat(src, dst)
diff --git a/tools/patch_sdk.dart b/tools/patch_sdk.dart
index 9dac1deb..5d1cf86 100644
--- a/tools/patch_sdk.dart
+++ b/tools/patch_sdk.dart
@@ -29,7 +29,6 @@
 import 'package:kernel/target/targets.dart';
 import 'package:kernel/target/vm.dart' show VmTarget;
 import 'package:kernel/target/flutter.dart' show FlutterTarget;
-import 'package:vm/target/runner.dart' show RunnerTarget;
 import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
 
 /// Set of input files that were read by this script to generate patched SDK.
@@ -134,10 +133,6 @@
       target = new VmTarget(flags);
       break;
 
-    case 'runner':
-      target = new RunnerTarget(flags);
-      break;
-
     case 'flutter':
     case 'flutter_release':
       target = new FlutterTarget(flags);
