diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05ae78c..54bc2bc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 2.1.0-dev.9.3
+
+Cherry-pick 65951ef5080bcfa7d8862685e96f75c2c5d17841 to dev
+
+Cherry-pick 6004c8a1876731e65104cf88f46af01bfe8c24c4 to dev
+
 ## 2.1.0-dev.9.2
 
 Cherry-pick 2cf0ca381ce33d1e6597c778eb1a915eecdac109 to dev
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
index e653943..f6be1c1 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
@@ -174,6 +174,9 @@
 
   @override
   int generatedSize(OutputUnit unit) {
+    if (_emitter.omittedFragments.any((f) => f.outputUnit == unit)) {
+      return 0;
+    }
     Fragment key = _emitter.outputBuffers.keys
         .firstWhere((Fragment fragment) => fragment.outputUnit == unit);
     return _emitter.outputBuffers[key].length;
diff --git a/pkg/dev_compiler/lib/src/compiler/shared_command.dart b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
index a136652..ddb903c 100644
--- a/pkg/dev_compiler/lib/src/compiler/shared_command.dart
+++ b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
@@ -149,9 +149,12 @@
           : (outPaths as List<String>)
               .firstWhere((_) => true, orElse: () => null);
 
+      // TODO(jmesserly): fix the debugger console so it's not passing invalid
+      // options.
+      if (outPath == null) return null;
       if (moduleRoot != null) {
-        // TODO(jmesserly): remove this legacy support after a deprecation period.
-        // (Mainly this is to give time for migrating build rules.)
+        // TODO(jmesserly): remove this legacy support after a deprecation
+        // period. (Mainly this is to give time for migrating build rules.)
         moduleName =
             path.withoutExtension(path.relative(outPath, from: moduleRoot));
       } else {
diff --git a/pkg/dev_compiler/web/web_command.dart b/pkg/dev_compiler/web/web_command.dart
index ac2b54f..2904b5a 100644
--- a/pkg/dev_compiler/web/web_command.dart
+++ b/pkg/dev_compiler/web/web_command.dart
@@ -285,13 +285,13 @@
       }
       resources.newFile(fileName, sourceCode);
 
-      compilerOptions.moduleName = path.toUri(libraryName).toString();
+      var name = path.toUri(libraryName).toString();
+      compilerOptions.moduleName = name;
       JSModuleFile module =
           compileWithAnalyzer(driver, [fileName], options, compilerOptions);
 
       var moduleCode = '';
       if (module.isValid) {
-        var name = compilerOptions.moduleName;
         moduleCode =
             module.getCode(ModuleFormat.legacyConcat, name, name + '.map').code;
       }
diff --git a/tools/VERSION b/tools/VERSION
index f6d7bfb..fe36fde 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 1
 PATCH 0
 PRERELEASE 9
-PRERELEASE_PATCH 2
+PRERELEASE_PATCH 3
