| Index: pkg/front_end/lib/src/incremental/file_state.dart | 
| diff --git a/pkg/front_end/lib/src/incremental/file_state.dart b/pkg/front_end/lib/src/incremental/file_state.dart | 
| index d060d02e7849f534c2037fcd3378235641b7c662..cb0a0d6d44254af58f384173d25a2bb8dc5431e7 100644 | 
| --- a/pkg/front_end/lib/src/incremental/file_state.dart | 
| +++ b/pkg/front_end/lib/src/incremental/file_state.dart | 
| @@ -15,7 +15,7 @@ import 'package:front_end/src/fasta/uri_translator.dart'; | 
| import 'package:front_end/src/byte_store/byte_store.dart'; | 
| import 'package:front_end/src/incremental/format.dart'; | 
| import 'package:front_end/src/incremental/unlinked_unit.dart'; | 
| -import 'package:kernel/target/vm.dart'; | 
| +import 'package:kernel/target/targets.dart'; | 
|  | 
| /// This function is called for each newly discovered file, and the returned | 
| /// [Future] is awaited before reading the file content. | 
| @@ -182,7 +182,7 @@ class FileState { | 
| _importedLibraries.add(file); | 
| } | 
| } | 
| -    await _addVmTargetImportsForCore(); | 
| +    await _addTargetExtraRequiredLibraries(); | 
| for (var export_ in unlinkedUnit.exports) { | 
| FileState file = await _getFileForRelativeUri(export_.uri); | 
| if (file != null) { | 
| @@ -228,13 +228,14 @@ class FileState { | 
| return uri.toString(); | 
| } | 
|  | 
| -  /// Fasta unconditionally loads all VM libraries.  In order to be able to | 
| -  /// serve them using the file system view, pretend that all of them were | 
| -  /// imported into `dart:core`. | 
| -  /// TODO(scheglov) Ask VM people whether all these libraries are required. | 
| -  Future<Null> _addVmTargetImportsForCore() async { | 
| +  /// Fasta unconditionally loads extra libraries based on the target.  In order | 
| +  /// to be able to serve them using the file system view, pretend that all of | 
| +  /// them were imported into `dart:core`. | 
| +  /// TODO(scheglov,sigmund): remove this implicit import, instead make fasta | 
| +  /// and IKG aware of extra code that needs to be loaded. | 
| +  Future<Null> _addTargetExtraRequiredLibraries() async { | 
| if (uri.toString() != 'dart:core') return; | 
| -    for (String uri in new VmTarget(null).extraRequiredLibraries) { | 
| +    for (String uri in _fsState.target.extraRequiredLibraries) { | 
| FileState file = await _getFileForRelativeUri(uri); | 
| // TODO(scheglov) add error handling | 
| if (file != null) { | 
| @@ -267,6 +268,7 @@ class FileState { | 
| class FileSystemState { | 
| final ByteStore _byteStore; | 
| final FileSystem fileSystem; | 
| +  final Target target; | 
| final UriTranslator uriTranslator; | 
| final List<int> _salt; | 
| final NewFileFn _newFileFn; | 
| @@ -285,8 +287,8 @@ class FileSystemState { | 
| /// We do this when we use SDK outline instead of compiling SDK sources. | 
| final Set<Uri> skipSdkLibraries = new Set<Uri>(); | 
|  | 
| -  FileSystemState(this._byteStore, this.fileSystem, this.uriTranslator, | 
| -      this._salt, this._newFileFn); | 
| +  FileSystemState(this._byteStore, this.fileSystem, this.target, | 
| +      this.uriTranslator, this._salt, this._newFileFn); | 
|  | 
| /// Return the [FileSystem] that is backed by this [FileSystemState].  The | 
| /// files in this [FileSystem] always have the same content as the | 
|  |