Version 2.11.0-253.0.dev

Merge commit '1ea407ee6c5d7dcd1808ce82994bc1177d058b38' into 'dev'
diff --git a/DEPS b/DEPS
index d76a003..bab0f51 100644
--- a/DEPS
+++ b/DEPS
@@ -73,7 +73,7 @@
   "boringssl_gen_rev": "429ccb1877f7987a6f3988228bc2440e61293499",
   "boringssl_rev" : "4dfd5af70191b068aebe567b8e29ce108cee85ce",
   "browser-compat-data_tag": "v1.0.22",
-  "charcode_rev": "4a685faba42d86ebd9d661eadd1e79d0a1c34c43",
+  "charcode_rev": "bcd8a12c315b7a83390e4865ad847ecd9344cba2",
   "chrome_rev" : "19997",
   "cli_util_rev" : "335ed165887d0ec97c2a09173ebf22dcf56a6c4e",
   "collection_rev": "60e6ee2228586980826b07ec1df633bd879f42ea",
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index 6d31ea1..720c0e4 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -19,7 +19,7 @@
    */
   static const HintCode ASSIGNMENT_OF_DO_NOT_STORE = HintCode(
       'ASSIGNMENT_OF_DO_NOT_STORE',
-      "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field.",
+      "'{0}' is marked 'doNotStore' and shouldn't be assigned to a field or top-level variable.",
       correction: "Try removing the assignment.");
 
   /**
diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index 3b9013c..cd7f1bb 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -418,15 +418,7 @@
               [field.name, overriddenElement.enclosingElement.name]);
         }
 
-        var expressionMap =
-            _getSubExpressionsMarkedDoNotStore(field.initializer);
-        for (var entry in expressionMap.entries) {
-          _errorReporter.reportErrorForNode(
-            HintCode.ASSIGNMENT_OF_DO_NOT_STORE,
-            entry.key,
-            [entry.value.name],
-          );
-        }
+        _checkForAssignmentOfDoNotStore(field.initializer);
       }
     } finally {
       _inDeprecatedMember = wasInDeprecatedMember;
@@ -705,6 +697,9 @@
     if (_hasDeprecatedAnnotation(node.metadata)) {
       _inDeprecatedMember = true;
     }
+    for (var decl in node.variables.variables) {
+      _checkForAssignmentOfDoNotStore(decl.initializer);
+    }
 
     try {
       super.visitTopLevelVariableDeclaration(node);
@@ -798,6 +793,17 @@
     return false;
   }
 
+  void _checkForAssignmentOfDoNotStore(Expression expression) {
+    var expressionMap = _getSubExpressionsMarkedDoNotStore(expression);
+    for (var entry in expressionMap.entries) {
+      _errorReporter.reportErrorForNode(
+        HintCode.ASSIGNMENT_OF_DO_NOT_STORE,
+        entry.key,
+        [entry.value.name],
+      );
+    }
+  }
+
   /// Given some [element], look at the associated metadata and report the use
   /// of the member if it is declared as deprecated. If a diagnostic is reported
   /// it should be reported at the given [node].
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
index d9cb6c6..b70e8a4 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_validator.dart
@@ -29,6 +29,9 @@
   /// The name of the field whose value is the name of the package.
   static const String NAME_FIELD = 'name';
 
+  /// The name of the field whose value is a path to a package dependency.
+  static const String PATH_FIELD = 'path';
+
   /// The resource provider used to access the file system.
   final ResourceProvider provider;
 
@@ -118,11 +121,17 @@
     Map<dynamic, YamlNode> declaredDevDependencies =
         _getDeclaredDependencies(reporter, contents, DEV_DEPENDENCIES_FIELD);
 
-    for (YamlNode packageName in declaredDevDependencies.keys) {
+    for (var dependency in declaredDependencies.entries) {
+      _validatePathEntries(reporter, dependency.value);
+    }
+
+    for (var dependency in declaredDevDependencies.entries) {
+      var packageName = dependency.key;
       if (declaredDependencies.containsKey(packageName)) {
         _reportErrorForNode(reporter, packageName,
             PubspecWarningCode.UNNECESSARY_DEV_DEPENDENCY, [packageName.value]);
       }
+      _validatePathEntries(reporter, dependency.value);
     }
   }
 
@@ -193,4 +202,24 @@
           reporter, nameField, PubspecWarningCode.NAME_NOT_STRING);
     }
   }
+
+  /// Validate that `path` entries reference valid paths.
+  void _validatePathEntries(ErrorReporter reporter, YamlNode dependency) {
+    if (dependency is YamlMap) {
+      for (var node in dependency.nodes.entries) {
+        var pathEntry = dependency[PATH_FIELD];
+        if (pathEntry != null) {
+          var context = provider.pathContext;
+          var normalizedPath = context.joinAll(path.posix.split(pathEntry));
+          var packageRoot = context.dirname(source.fullName);
+          var dependencyPath =
+              path.canonicalize(context.join(packageRoot, normalizedPath));
+          if (!provider.getFolder(dependencyPath).exists) {
+            _reportErrorForNode(reporter, node.value,
+                PubspecWarningCode.PATH_DOES_NOT_EXIST, [pathEntry]);
+          }
+        }
+      }
+    }
+  }
 }
diff --git a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
index 7e03b42..5e68c9b 100644
--- a/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
+++ b/pkg/analyzer/lib/src/pubspec/pubspec_warning_code.dart
@@ -63,6 +63,15 @@
       "The value of the name field is expected to be a string.",
       correction: "Try converting the value to be a string.");
 
+  /// A code indicating that a specified path dependency does not exist.
+  ///
+  /// Parameters:
+  /// 0: the path to the dependency as given in the file.
+  static const PubspecWarningCode PATH_DOES_NOT_EXIST = PubspecWarningCode(
+      'PATH_DOES_NOT_EXIST', "The path {0} does not exist.",
+      correction:
+          "Try creating the referenced path or using a path that exists.");
+
   /// A code indicating that a package listed as a dev dependency is also listed
   /// as a normal dependency.
   ///
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
index ccdfcf5..664891c 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
@@ -178,6 +178,49 @@
     ]);
   }
 
+  test_topLevelVariable_assignment_field() async {
+    await assertErrorsInCode('''
+import 'package:meta/meta.dart';
+
+String top = A().f; 
+
+class A{
+  @doNotStore
+  final f = '';
+}
+''', [
+      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 47, 5, messageContains: "'f'"),
+    ]);
+  }
+
+  test_topLevelVariable_assignment_getter() async {
+    await assertErrorsInCode('''
+import 'package:meta/meta.dart';
+
+String top = v; 
+
+@doNotStore
+String get v => '';
+''', [
+      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 47, 1, messageContains: "'v'"),
+    ]);
+  }
+
+  test_topLevelVariable_assignment_method() async {
+    await assertErrorsInCode('''
+import 'package:meta/meta.dart';
+
+String top = A().v(); 
+
+class A{
+  @doNotStore
+  String v() => '';
+}
+''', [
+      error(HintCode.ASSIGNMENT_OF_DO_NOT_STORE, 47, 7, messageContains: "'v'"),
+    ]);
+  }
+
   test_topLevelVariable_binaryExpression() async {
     await assertErrorsInCode('''
 import 'package:meta/meta.dart';
diff --git a/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart b/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
index cf3dda7..161046c 100644
--- a/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
+++ b/pkg/analyzer/test/src/pubspec/pubspec_validator_test.dart
@@ -196,6 +196,47 @@
 ''');
   }
 
+  test_dependencyGitPath() {
+    // git paths are not validated
+    assertNoErrors('''
+name: sample
+dependencies:
+  foo:
+    git:
+      url: git@github.com:foo/foo.git
+      path: path/to/foo
+''');
+  }
+
+  test_dependencyPathDoesNotExist_path_error() {
+    assertErrors('''
+name: sample
+dependencies:
+  foo:
+    path: does/not/exist
+''', [PubspecWarningCode.PATH_DOES_NOT_EXIST]);
+  }
+
+  test_dependencyPathExists() {
+    newFolder('/foo');
+    assertNoErrors('''
+name: sample
+dependencies:
+  foo:
+    path: /foo
+''');
+  }
+
+  test_dependencyPathRelativeExists() {
+    newFolder('/foo');
+    assertNoErrors('''
+name: sample
+dependencies:
+  foo:
+    path: ../foo
+''');
+  }
+
   test_devDependenciesField_empty() {
     assertNoErrors('''
 name: sample
@@ -218,6 +259,25 @@
 ''');
   }
 
+  test_devDependencyPathDoesNotExist_path_error() {
+    assertErrors('''
+name: sample
+dev_dependencies:
+  foo:
+    path: does/not/exist
+''', [PubspecWarningCode.PATH_DOES_NOT_EXIST]);
+  }
+
+  test_devDependencyPathExists() {
+    newFolder('/foo');
+    assertNoErrors('''
+name: sample
+dev_dependencies:
+  foo:
+    path: /foo
+''');
+  }
+
   test_flutterField_empty_noError() {
     assertNoErrors('''
 name: sample
diff --git a/pkg/dev_compiler/lib/js/legacy/dart_library.js b/pkg/dev_compiler/lib/js/legacy/dart_library.js
index 82670a9..609945c 100644
--- a/pkg/dev_compiler/lib/js/legacy/dart_library.js
+++ b/pkg/dev_compiler/lib/js/legacy/dart_library.js
@@ -293,14 +293,18 @@
       if (library.onReloadEnd) {
         library.onReloadEnd();
         return;
-      } else {
-        document.body = _originalBody;
+      } else { 
+        if (dart_sdk.dart.global.document) {
+          dart_sdk.dart.global.document.body = _originalBody;
+        }
       }
     } else {
       // If not a reload then store the initial html to reset it on reload.
-      _originalBody = document.body.cloneNode(true);
+      if (dart_sdk.dart.global.document) {
+        _originalBody = dart_sdk.dart.global.document.body.cloneNode(true);
+      }
     }
-    library.main();
+    library.main([]);
   }
   dart_library.start = start;
 
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index 915c1fe..65888a8 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -209,7 +209,7 @@
       break;
     case 'd8':
       d8 = true;
-      mod = 'es6';
+      mod = 'legacy';
       break;
     case 'chrome':
       chrome = true;
@@ -217,24 +217,14 @@
       break;
   }
 
-  String ddcSdk;
-  String sdkJsPath;
-  String requirePath;
+  var sdkRoot = p.dirname(p.dirname(ddcPath));
+  var buildDir =
+      p.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out', 'ReleaseX64');
+  var requirePath = p.join(sdkRoot, 'third_party', 'requirejs');
+  var sdkOutlineDill = p.join(buildDir,
+      soundNullSafety ? 'ddc_outline_sound.dill' : 'ddc_outline.dill');
   var suffix = soundNullSafety ? p.join('sound', mod) : p.join('kernel', mod);
-  if (debug) {
-    var sdkRoot = p.dirname(p.dirname(ddcPath));
-    var buildDir =
-        p.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out', 'ReleaseX64');
-    dartSdk = p.join(buildDir, 'dart-sdk');
-    ddcSdk = p.join(buildDir,
-        soundNullSafety ? 'ddc_outline_sound.dill' : 'ddc_outline.dill');
-    sdkJsPath = p.join(buildDir, 'gen', 'utils', 'dartdevc', suffix);
-    requirePath = p.join(sdkRoot, 'third_party', 'requirejs');
-  } else {
-    ddcSdk = p.join(dartSdk, 'lib', '_internal', 'ddc_sdk.dill');
-    sdkJsPath = p.join(dartSdk, 'lib', 'dev_compiler', suffix);
-    requirePath = sdkJsPath;
-  }
+  var sdkJsPath = p.join(buildDir, 'gen', 'utils', 'dartdevc', suffix);
 
   // Print an initial empty line to separate the invocation from the output.
   if (verbose) {
@@ -245,7 +235,7 @@
     var ddcArgs = [
       if (summarizeText) '--summarize-text',
       '--modules=$mod',
-      '--dart-sdk-summary=$ddcSdk',
+      '--dart-sdk-summary=$sdkOutlineDill',
       for (var summary in summaries) '--summary=$summary',
       for (var experiment in experiments) '--enable-experiment=$experiment',
       if (soundNullSafety) '--sound-null-safety',
@@ -352,18 +342,19 @@
       jsFile.writeAsStringSync(jsContents);
 
       var runjs = '''
-import { dart, _isolate_helper } from '$sdkJsPath/dart_sdk.js';
-import { $libname } from '$basename.js';
+load("$ddcPath/lib/js/legacy/dart_library.js");
+load("$sdkJsPath/dart_sdk.js");
+load("$out");
+
+let dart_sdk = dart_library.import('dart_sdk');
 // Create a self reference for JS interop tests that set fields on self.
-dart.global.self = dart.global;
-let main = $libname.main;
+dart_sdk.dart.global.self = dart_sdk.dart.global;
 if ($nnbd) {
-  dart.weakNullSafetyWarnings(!$soundNullSafety);
-  dart.nonNullAsserts($nonNullAsserts);
-  dart.nativeNonNullAsserts($nativeNonNullAsserts);
+  dart_sdk.dart.weakNullSafetyWarnings(!$soundNullSafety);
+  dart_sdk.dart.nonNullAsserts($nonNullAsserts);
+  dart_sdk.dart.nativeNonNullAsserts($nativeNonNullAsserts);
 }
-_isolate_helper.startRootIsolate(() => {}, []);
-main([]);
+dart_library.start('$basename', '$libname');
 ''';
       var d8File = p.setExtension(out, '.d8.js');
       File(d8File).writeAsStringSync(runjs);
diff --git a/runtime/observatory/tests/service/evaluate_activation_in_method_class_other.dart b/runtime/observatory/tests/service/evaluate_activation_in_method_class_other.dart
index bf070a1..000ba5e 100644
--- a/runtime/observatory/tests/service/evaluate_activation_in_method_class_other.dart
+++ b/runtime/observatory/tests/service/evaluate_activation_in_method_class_other.dart
@@ -6,22 +6,22 @@
 
 var topLevel = "OtherLibrary";
 
-class Superclass {
-  var _instVar = 'Superclass';
-  var instVar = 'Superclass';
-  method() => 'Superclass';
-  static staticMethod() => 'Superclass';
+class Superclass2 {
+  var _instVar = 'Superclass2';
+  var instVar = 'Superclass2';
+  method() => 'Superclass2';
+  static staticMethod() => 'Superclass2';
   suppress_warning() => _instVar;
 }
 
-class Klass extends Superclass {
-  var _instVar = 'Klass';
-  var instVar = 'Klass';
-  method() => 'Klass';
-  static staticMethod() => 'Klass';
+class Superclass1 extends Superclass2 {
+  var _instVar = 'Superclass1';
+  var instVar = 'Superclass1';
+  method() => 'Superclass1';
+  static staticMethod() => 'Superclass1';
 
   test() {
-    var _local = 'Klass';
+    var _local = 'Superclass1';
     debugger();
     // Suppress unused variable warning.
     print(_local);
diff --git a/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart b/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
index 621ebd2..b16d24e 100644
--- a/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
+++ b/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
@@ -15,7 +15,7 @@
 
 var topLevel = "TestLibrary";
 
-class Subclass extends Superclass with Klass {
+class Subclass extends Superclass1 {
   var _instVar = 'Subclass';
   var instVar = 'Subclass';
   method() => 'Subclass';
@@ -36,18 +36,18 @@
   var topFrame = 0;
   expect(stack.type, equals('Stack'));
   expect(stack['frames'][topFrame].function.name, equals('test'));
-  expect(stack['frames'][topFrame].function.dartOwner.name,
-      equals('Superclass&Klass'));
+  expect(
+      stack['frames'][topFrame].function.dartOwner.name, equals('Superclass1'));
 
   Instance result;
 
   result = await isolate.evalFrame(topFrame, '_local') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   result = await isolate.evalFrame(topFrame, '_instVar') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   result = await isolate.evalFrame(topFrame, 'instVar') as Instance;
   print(result);
@@ -59,19 +59,19 @@
 
   result = await isolate.evalFrame(topFrame, 'super._instVar') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'super.instVar') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'super.method()') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'staticMethod()') as Instance;
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   // function.Owner verus function.Origin
   // The mixin of Superclass is in _other.dart and the mixin
diff --git a/runtime/observatory/tests/service/get_allocation_samples_test.dart b/runtime/observatory/tests/service/get_allocation_samples_test.dart
index 4246154..44b4694 100644
--- a/runtime/observatory/tests/service/get_allocation_samples_test.dart
+++ b/runtime/observatory/tests/service/get_allocation_samples_test.dart
@@ -56,7 +56,7 @@
     expect(fooClass.traceAllocations, isTrue);
     dynamic profileResponse = await fooClass.getAllocationSamples();
     expect(profileResponse, isNotNull);
-    expect(profileResponse['type'], equals('_CpuProfile'));
+    //expect(profileResponse['type'], equals('_CpuProfile'));
     await fooClass.setTraceAllocations(false);
     await fooClass.reload();
     expect(fooClass.traceAllocations, isFalse);
@@ -68,11 +68,11 @@
     CodeCallTreeNode? node = tree.root;
     var expected = [
       'Root',
-      'DRT_AllocateObject',
-      '[Stub] Allocate Foo',
-      'test',
-      'test',
-      '_Closure.call'
+      '[Unoptimized] test',
+      '[Unoptimized] test',
+      '[Unoptimized] _Closure.call',
+      '[Unoptimized] _ServiceTesteeRunner.run',
+      '[Unoptimized] _AsyncAwaitCompleter.start'
     ];
     for (var i = 0; i < expected.length; i++) {
       expect(node!.profileCode.code.name, equals(expected[i]));
diff --git a/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart b/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart
deleted file mode 100644
index 425eb53..0000000
--- a/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2016, 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.
-
-import 'package:observatory/service_io.dart';
-import 'package:test/test.dart';
-import 'test_helper.dart';
-import 'service_test_common.dart';
-
-var x;
-
-doThrow() {
-  if (x) while {
-  };
-}
-
-var tests = <IsolateTest>[
-  hasStoppedAtExit,
-
-  (Isolate isolate) async {
-    await isolate.reload();
-    expect(isolate.error, isNotNull);
-    expect(isolate.error.message.contains("'(' expected"), isTrue);
-  }
-];
-
-main(args) => runIsolateTestsSynchronous(args,
-                                         tests,
-                                         pause_on_exit: true,
-                                         testeeConcurrent: doThrow);
diff --git a/runtime/observatory/tests/service/get_source_report_test.dart b/runtime/observatory/tests/service/get_source_report_test.dart
index 731e2f3..adea481 100644
--- a/runtime/observatory/tests/service/get_source_report_test.dart
+++ b/runtime/observatory/tests/service/get_source_report_test.dart
@@ -73,12 +73,12 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': 432,
-      'endPos': 576,
+      'startPos': 424,
+      'endPos': 568,
       'compiled': true,
       'coverage': {
-        'hits': [432, 482, 533, 562],
-        'misses': [495],
+        'hits': [424, 474, 525, 554],
+        'misses': [487],
       }
     };
 
@@ -91,7 +91,7 @@
     final numRanges = coverage['ranges'].length;
     expect(coverage['type'], equals('SourceReport'));
 
-    expect(numRanges, equals(12));
+    expect(numRanges, equals(10));
     expect(coverage['ranges'][0], equals(expectedRange));
     expect(coverage['scripts'].length, 1);
     expect(
@@ -106,7 +106,7 @@
     };
     coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
     expect(coverage['type'], equals('SourceReport'));
-    expect(coverage['ranges'].length, numRanges);
+    expect(coverage['ranges'].length, 11);
     expect(allRangesCompiled(coverage), isTrue);
 
     // One function
diff --git a/runtime/observatory/tests/service/step_through_setter_test.dart b/runtime/observatory/tests/service/step_through_setter_test.dart
index aa40fb1..bff5b7d 100644
--- a/runtime/observatory/tests/service/step_through_setter_test.dart
+++ b/runtime/observatory/tests/service/step_through_setter_test.dart
@@ -28,7 +28,7 @@
     _xyz = i - 1;
   }
 
-  get barXYZ => _xyz + 1;
+  int get barXYZ => _xyz + 1;
 }
 
 List<String> stops = [];
diff --git a/runtime/observatory_2/tests/service_2/coverage_leaf_function_test.dart b/runtime/observatory_2/tests/service_2/coverage_leaf_function_test.dart
index 25587aa..54d4f59 100644
--- a/runtime/observatory_2/tests/service_2/coverage_leaf_function_test.dart
+++ b/runtime/observatory_2/tests/service_2/coverage_leaf_function_test.dart
@@ -44,12 +44,12 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': 384,
-      'endPos': 434,
+      'startPos': 386,
+      'endPos': 436,
       'compiled': true,
       'coverage': {
         'hits': [],
-        'misses': [384]
+        'misses': [386]
       }
     };
 
@@ -85,11 +85,11 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': 384,
-      'endPos': 434,
+      'startPos': 386,
+      'endPos': 436,
       'compiled': true,
       'coverage': {
-        'hits': [384],
+        'hits': [386],
         'misses': []
       }
     };
diff --git a/runtime/observatory_2/tests/service_2/coverage_optimized_function_test.dart b/runtime/observatory_2/tests/service_2/coverage_optimized_function_test.dart
index d99072d..2c95a1f 100644
--- a/runtime/observatory_2/tests/service_2/coverage_optimized_function_test.dart
+++ b/runtime/observatory_2/tests/service_2/coverage_optimized_function_test.dart
@@ -37,11 +37,11 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': 461,
-      'endPos': 528,
+      'startPos': 463,
+      'endPos': 530,
       'compiled': true,
       'coverage': {
-        'hits': [461, 501, 512, 516],
+        'hits': [463, 503, 514, 518],
         'misses': []
       }
     };
diff --git a/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_other.dart b/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_other.dart
index bf070a1..000ba5e 100644
--- a/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_other.dart
+++ b/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_other.dart
@@ -6,22 +6,22 @@
 
 var topLevel = "OtherLibrary";
 
-class Superclass {
-  var _instVar = 'Superclass';
-  var instVar = 'Superclass';
-  method() => 'Superclass';
-  static staticMethod() => 'Superclass';
+class Superclass2 {
+  var _instVar = 'Superclass2';
+  var instVar = 'Superclass2';
+  method() => 'Superclass2';
+  static staticMethod() => 'Superclass2';
   suppress_warning() => _instVar;
 }
 
-class Klass extends Superclass {
-  var _instVar = 'Klass';
-  var instVar = 'Klass';
-  method() => 'Klass';
-  static staticMethod() => 'Klass';
+class Superclass1 extends Superclass2 {
+  var _instVar = 'Superclass1';
+  var instVar = 'Superclass1';
+  method() => 'Superclass1';
+  static staticMethod() => 'Superclass1';
 
   test() {
-    var _local = 'Klass';
+    var _local = 'Superclass1';
     debugger();
     // Suppress unused variable warning.
     print(_local);
diff --git a/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_test.dart b/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_test.dart
index 6af1450..9921505 100644
--- a/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_test.dart
+++ b/runtime/observatory_2/tests/service_2/evaluate_activation_in_method_class_test.dart
@@ -15,7 +15,7 @@
 
 var topLevel = "TestLibrary";
 
-class Subclass extends Superclass with Klass {
+class Subclass extends Superclass1 {
   var _instVar = 'Subclass';
   var instVar = 'Subclass';
   method() => 'Subclass';
@@ -36,18 +36,18 @@
   var topFrame = 0;
   expect(stack.type, equals('Stack'));
   expect(stack['frames'][topFrame].function.name, equals('test'));
-  expect(stack['frames'][topFrame].function.dartOwner.name,
-      equals('Superclass&Klass'));
+  expect(
+      stack['frames'][topFrame].function.dartOwner.name, equals('Superclass1'));
 
   Instance result;
 
   result = await isolate.evalFrame(topFrame, '_local');
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   result = await isolate.evalFrame(topFrame, '_instVar');
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   result = await isolate.evalFrame(topFrame, 'instVar');
   print(result);
@@ -59,19 +59,19 @@
 
   result = await isolate.evalFrame(topFrame, 'super._instVar');
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'super.instVar');
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'super.method()');
   print(result);
-  expect(result.valueAsString, equals('Superclass'));
+  expect(result.valueAsString, equals('Superclass2'));
 
   result = await isolate.evalFrame(topFrame, 'staticMethod()');
   print(result);
-  expect(result.valueAsString, equals('Klass'));
+  expect(result.valueAsString, equals('Superclass1'));
 
   // function.Owner verus function.Origin
   // The mixin of Superclass is in _other.dart and the mixin
diff --git a/runtime/observatory_2/tests/service_2/get_allocation_samples_test.dart b/runtime/observatory_2/tests/service_2/get_allocation_samples_test.dart
index 87eebfd..9c1252b 100644
--- a/runtime/observatory_2/tests/service_2/get_allocation_samples_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_allocation_samples_test.dart
@@ -56,7 +56,7 @@
     expect(fooClass.traceAllocations, isTrue);
     dynamic profileResponse = await fooClass.getAllocationSamples();
     expect(profileResponse, isNotNull);
-    expect(profileResponse['type'], equals('_CpuProfile'));
+    expect(profileResponse['type'], equals('CpuSamples'));
     await fooClass.setTraceAllocations(false);
     await fooClass.reload();
     expect(fooClass.traceAllocations, isFalse);
@@ -68,11 +68,11 @@
     var node = tree.root;
     var expected = [
       'Root',
-      'DRT_AllocateObject',
-      '[Stub] Allocate Foo',
-      'test',
-      'test',
-      '_Closure.call'
+      '[Unoptimized] test',
+      '[Unoptimized] test',
+      '[Unoptimized] _Closure.call',
+      '[Unoptimized] _ServiceTesteeRunner.run',
+      '[Unoptimized] _AsyncAwaitCompleter.start'
     ];
     for (var i = 0; i < expected.length; i++) {
       expect(node.profileCode.code.name, equals(expected[i]));
diff --git a/runtime/observatory_2/tests/service_2/get_isolate_after_language_error_test.dart b/runtime/observatory_2/tests/service_2/get_isolate_after_language_error_test.dart
deleted file mode 100644
index 88a7f89..0000000
--- a/runtime/observatory_2/tests/service_2/get_isolate_after_language_error_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2016, 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.
-
-import 'package:observatory_2/service_io.dart';
-import 'package:test/test.dart';
-import 'test_helper.dart';
-import 'service_test_common.dart';
-
-var x;
-
-doThrow() {
-  if (x) while {
-  };
-}
-
-var tests = <IsolateTest>[
-  hasStoppedAtExit,
-
-  (Isolate isolate) async {
-    await isolate.reload();
-    expect(isolate.error, isNotNull);
-    expect(isolate.error.message.contains("'(' expected"), isTrue);
-  }
-];
-
-main(args) => runIsolateTestsSynchronous(args,
-                                         tests,
-                                         pause_on_exit: true,
-                                         testeeConcurrent: doThrow);
diff --git a/runtime/observatory_2/tests/service_2/get_source_report_test.dart b/runtime/observatory_2/tests/service_2/get_source_report_test.dart
index 984de51..97606de 100644
--- a/runtime/observatory_2/tests/service_2/get_source_report_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_source_report_test.dart
@@ -73,12 +73,12 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': 432,
-      'endPos': 576,
+      'startPos': 426,
+      'endPos': 570,
       'compiled': true,
       'coverage': {
-        'hits': [432, 482, 533, 562],
-        'misses': [495],
+        'hits': [426, 476, 527, 556],
+        'misses': [489],
       }
     };
 
@@ -91,7 +91,7 @@
     final numRanges = coverage['ranges'].length;
     expect(coverage['type'], equals('SourceReport'));
 
-    expect(numRanges, equals(12));
+    expect(numRanges, equals(10));
     expect(coverage['ranges'][0], equals(expectedRange));
     expect(coverage['scripts'].length, 1);
     expect(
@@ -106,7 +106,7 @@
     };
     coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
     expect(coverage['type'], equals('SourceReport'));
-    expect(coverage['ranges'].length, numRanges);
+    expect(coverage['ranges'].length, 11);
     expect(allRangesCompiled(coverage), isTrue);
 
     // One function
diff --git a/runtime/observatory_2/tests/service_2/get_version_rpc_test.dart b/runtime/observatory_2/tests/service_2/get_version_rpc_test.dart
index 468e979..d5450e5 100644
--- a/runtime/observatory_2/tests/service_2/get_version_rpc_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_version_rpc_test.dart
@@ -12,7 +12,7 @@
     var result = await vm.invokeRpcNoUpgrade('getVersion', {});
     expect(result['type'], equals('Version'));
     expect(result['major'], equals(3));
-    expect(result['minor'], equals(39));
+    expect(result['minor'], equals(40));
     expect(result['_privateMajor'], equals(0));
     expect(result['_privateMinor'], equals(0));
   },
diff --git a/runtime/observatory_2/tests/service_2/step_through_setter_test.dart b/runtime/observatory_2/tests/service_2/step_through_setter_test.dart
index aa40fb1..bff5b7d 100644
--- a/runtime/observatory_2/tests/service_2/step_through_setter_test.dart
+++ b/runtime/observatory_2/tests/service_2/step_through_setter_test.dart
@@ -28,7 +28,7 @@
     _xyz = i - 1;
   }
 
-  get barXYZ => _xyz + 1;
+  int get barXYZ => _xyz + 1;
 }
 
 List<String> stops = [];
diff --git a/tools/VERSION b/tools/VERSION
index 2f9367b..0e1fae3 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 252
+PRERELEASE 253
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 993294a..8407171 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -338,8 +338,8 @@
     third_party/d8/linux/x64/d8 --stack_size=1024 sdk/lib/_internal/js_runtime/lib/preambles/d8.js out.js
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 hello.dart
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
-    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug hello.dart
-    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart parse hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart scan hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart