diff --git a/lib/src/barback/dart2js_transformer.dart b/lib/src/barback/dart2js_transformer.dart
index 28c976a..e9678ff 100644
--- a/lib/src/barback/dart2js_transformer.dart
+++ b/lib/src/barback/dart2js_transformer.dart
@@ -6,6 +6,7 @@
 import 'dart:convert';
 
 import 'package:analyzer/analyzer.dart';
+import 'package:async/async.dart';
 import 'package:barback/barback.dart';
 import 'package:collection/collection.dart';
 import 'package:path/path.dart' as p;
@@ -161,7 +162,8 @@
         suppressPackageWarnings:
             _configBool('suppressPackageWarnings', defaultsTo: true),
         terse: _configBool('terse'),
-        includeSourceMapUrls: _generateSourceMaps);
+        includeSourceMapUrls: _generateSourceMaps,
+        platformBinaries: provider.libraryRoot.resolve('lib/_internal/').path);
   }
 
   /// Parses and returns the "commandLineOptions" configuration option.
@@ -280,7 +282,7 @@
   }
 
   /// A [CompilerInputProvider] for dart2js.
-  Future<String> provideInput(Uri resourceUri) {
+  Future /* <String | List<int>> */ provideInput(Uri resourceUri) {
     // We only expect to get absolute "file:" URLs from dart2js.
     assert(resourceUri.isAbsolute);
     assert(resourceUri.scheme == "file");
@@ -391,11 +393,17 @@
     }
   }
 
-  Future<String> _readResource(Uri url) {
+  Future _readResource(Uri url) {
     return new Future.sync(() {
       // Find the corresponding asset in barback.
       var id = _sourceUrlToId(url);
-      if (id != null) return _transform.readInputAsString(id);
+      if (id != null) {
+        if (id.extension == '.dill') {
+          return collectBytes(_transform.readInput(id));
+        } else {
+          return _transform.readInputAsString(id);
+        }
+      }
 
       // Don't allow arbitrary file paths that point to things not in packages.
       // Doing so won't work in Dartium.
diff --git a/lib/src/barback/pub_package_provider.dart b/lib/src/barback/pub_package_provider.dart
index 482bf05..66cbcb2 100644
--- a/lib/src/barback/pub_package_provider.dart
+++ b/lib/src/barback/pub_package_provider.dart
@@ -75,8 +75,9 @@
     }
 
     // "$sdk" is a pseudo-package that provides access to the Dart library
-    // sources in the SDK. The dart2js transformer uses this to locate the Dart
-    // sources for "dart:" libraries.
+    // sources and kernel .dill files in the SDK. The dart2js transformer uses
+    // this to locate the Dart sources for "dart:" libraries and the
+    // dart2js_platform.dill files.
     if (id.package == r'$sdk') {
       // The asset path contains two "lib" entries. The first represents pub's
       // concept that all public assets are in "lib". The second comes from the
@@ -147,8 +148,10 @@
           files = files.map((file) => file.replaceAll(trailingUnderscore, ""));
         }
 
-        return new Stream.fromIterable(
-            files.where((file) => p.extension(file) == ".dart").map((file) {
+        return new Stream.fromIterable(files
+            .where((file) =>
+                p.extension(file) == '.dart' || p.extension(file) == '.dill')
+            .map((file) {
           var idPath = p.join("lib", "lib", p.relative(file, from: libPath));
           return new AssetId('\$sdk', p.toUri(idPath).toString());
         }));
diff --git a/lib/src/dart.dart b/lib/src/dart.dart
index c5d236d..2dec254 100644
--- a/lib/src/dart.dart
+++ b/lib/src/dart.dart
@@ -68,7 +68,8 @@
     bool suppressPackageWarnings: true,
     bool terse: false,
     bool includeSourceMapUrls: false,
-    bool toDart: false}) async {
+    bool toDart: false,
+    String platformBinaries}) async {
   // dart2js chokes on relative paths. Including "/./" can also confuse it, so
   // we normalize as well.
   entrypoint = p.normalize(p.absolute(entrypoint));
@@ -85,6 +86,9 @@
   if (!suppressPackageWarnings) options.add('--show-package-warnings');
   if (terse) options.add('--terse');
   if (toDart) options.add('--output-type=dart');
+  if (platformBinaries != null) {
+    options.add('--platform-binaries=$platformBinaries');
+  }
 
   var sourceUrl = p.toUri(entrypoint);
   options.add("--out=$sourceUrl.js");
