diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
index 1ee6e57..9d4d9c1 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
@@ -1457,6 +1457,7 @@
               compiler,
               monitor: compiler.dumpInfoTask,
               allowVariableMinification: false));
+      mainOutput.add(N);
     }
 
     mainOutput.add('$parseReflectionDataName(dart)$N');
@@ -1915,6 +1916,7 @@
                   precompiledFunctionAst, compiler,
                   monitor: compiler.dumpInfoTask,
                   allowVariableMinification: false));
+          output.add(N);
         }
         output.add('$parseReflectionDataName(dart)$N');
       }
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index a0a8db4..30c891d 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -8462,6 +8462,12 @@
   }
 
   while (scan_position != length) {
+    if (snippet_start == -1) {
+      if ((line == from_line) && (column == from_column)) {
+        snippet_start = scan_position;
+      }
+    }
+
     char c = src.CharAt(scan_position);
     if (c == '\n') {
       line++;
@@ -8477,11 +8483,7 @@
     scan_position++;
     column++;
 
-    if (snippet_start == -1) {
-      if ((line == from_line) && (column == from_column)) {
-        snippet_start = scan_position;
-      }
-    } else if ((line == to_line) && (column == to_column)) {
+    if ((line == to_line) && (column == to_column)) {
       snippet_end = scan_position;
       break;
     }
diff --git a/sdk/lib/_internal/pub/lib/src/barback/dependency_computer.dart b/sdk/lib/_internal/pub/lib/src/barback/dependency_computer.dart
index 0105cbf..dfca127 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/dependency_computer.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/dependency_computer.dart
@@ -75,7 +75,7 @@
           return phase.expand((config) {
             var id = config.id;
             if (id.isBuiltInTransformer) return [];
-            if (id.package != _graph.entrypoint.root.name &&
+            if (package.name != _graph.entrypoint.root.name &&
                 !config.canTransformPublicFiles) {
               return [];
             }
diff --git a/sdk/lib/_internal/pub/test/dependency_computer/dev_transformers_test.dart b/sdk/lib/_internal/pub/test/dependency_computer/dev_transformers_test.dart
index db1671c..6daa90b 100644
--- a/sdk/lib/_internal/pub/test/dependency_computer/dev_transformers_test.dart
+++ b/sdk/lib/_internal/pub/test/dependency_computer/dev_transformers_test.dart
@@ -47,6 +47,28 @@
     expectDependencies({"myapp": []});
   });
 
+  integration("does return a dependency's transformer that the root package "
+      "uses", () {
+    d.dir(appPath, [
+      d.pubspec({
+        "name": "myapp",
+        "dependencies": {"foo": {"path": "../foo"}},
+        "transformers": [{"foo": {"\$include": "test/myapp_test.dart"}}]
+      }),
+      d.dir("test", [d.file("myapp_test.dart", "")])
+    ]).create();
+
+    d.dir("foo", [
+      d.pubspec({
+        "name": "foo",
+        "version": "1.0.0"
+      }),
+      d.dir("lib", [d.file("foo.dart", transformer())])
+    ]).create();
+
+    expectDependencies({"foo": []});
+  });
+
   integration("doesn't return a dependency's transformer that can run on bin",
       () {
     d.dir(appPath, [
diff --git a/tests/lib/mirrors/method_mirror_source_other.dart b/tests/lib/mirrors/method_mirror_source_other.dart
new file mode 100644
index 0000000..29adf5b
--- /dev/null
+++ b/tests/lib/mirrors/method_mirror_source_other.dart
@@ -0,0 +1,6 @@
+main() {
+  print("Blah");
+}
+// This function must be on the first line.
+
+class SomethingInOther {}
\ No newline at end of file
diff --git a/tests/lib/mirrors/method_mirror_source_test.dart b/tests/lib/mirrors/method_mirror_source_test.dart
index d0aad92..9b09452 100644
--- a/tests/lib/mirrors/method_mirror_source_test.dart
+++ b/tests/lib/mirrors/method_mirror_source_test.dart
@@ -3,8 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import "dart:mirrors";
-
 import "package:expect/expect.dart";
+import "method_mirror_source_other.dart";
 
 expectSource(Mirror mirror, String source) {
   MethodMirror methodMirror;
@@ -14,7 +14,7 @@
     methodMirror = mirror as MethodMirror;
   }
   Expect.isTrue(methodMirror is MethodMirror);
-  Expect.equals(methodMirror.source, source);
+  Expect.equals(source, methodMirror.source);
 }
 
 foo1() {}
@@ -98,4 +98,11 @@
   var a = () {};
   expectSource(reflect(namedClosure), "namedClosure(x,y,z) => 1;");
   expectSource(reflect(a), "() {}");
+
+  // Function at first line.
+  LibraryMirror otherLib = reflectClass(SomethingInOther).owner;
+  expectSource(otherLib.declarations[#main],
+"""main() {
+  print("Blah");
+}""");
 }
diff --git a/tools/VERSION b/tools/VERSION
index 93b652d..344a8fe 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -26,6 +26,6 @@
 CHANNEL stable
 MAJOR 1
 MINOR 9
-PATCH 1
+PATCH 2
 PRERELEASE 0
 PRERELEASE_PATCH 0
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
index 0689ad7..99614b6 100644
--- a/tools/testing/dart/test_suite.dart
+++ b/tools/testing/dart/test_suite.dart
@@ -1465,7 +1465,6 @@
       packageRootArgument(optionsFromFile['packageRoot']);
     if (packageRoot != null) args.add(packageRoot);
     args.add('--out=$outputFile');
-    if (configuration['csp']) args.add('--csp');
     args.add(inputFile);
     List<String> options = optionsFromFile['sharedOptions'];
     if (options != null) args.addAll(options);
@@ -2216,6 +2215,9 @@
         configuration["minified"]) {
       args.add("--minify");
     }
+    if (compiler == "dart2js" && configuration["csp"]) {
+      args.add("--csp");
+    }
     if (compiler == "dartanalyzer" || compiler == "dart2analyzer") {
       args.add("--show-package-warnings");
       args.add("--enable-async");
