Version 2.14.0-278.0.dev

Merge commit 'ba5611a00b86014466a3ecbf3f07035794139ca0' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index fa2b398..d1d15bb 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -1874,8 +1874,8 @@
           assert(_gotError == null);
           // ignore: unnecessary_null_comparison
           assert(namedArguments != null);
-          error = handleConstructorInvocation(init.target, types,
-              positionalArguments, namedArguments, constructor);
+          error = handleConstructorInvocation(
+              init.target, types, positionalArguments, namedArguments, caller);
           if (error != null) return error;
         } else if (init is RedirectingInitializer) {
           // Since a redirecting constructor targets a constructor of the same
@@ -1905,7 +1905,7 @@
           assert(namedArguments != null);
 
           error = handleConstructorInvocation(init.target, typeArguments,
-              positionalArguments, namedArguments, constructor);
+              positionalArguments, namedArguments, caller);
           if (error != null) return error;
         } else if (init is AssertInitializer) {
           AbortConstant? error = checkAssert(init.statement);
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index 6efa1ec..a562b6b9 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -1000,7 +1000,9 @@
         }
       }
 
-      if (!noFullComponent && incrementalSerialization == true) {
+      if (!noFullComponent &&
+          (incrementalSerialization == true ||
+              world["compareWithFromScratch"] == true)) {
         // Do compile from scratch and compare.
         clearPrevErrorsEtc();
         TestIncrementalCompiler compilerFromScratch;
@@ -1036,9 +1038,12 @@
         await util.throwOnInsufficientUriToSource(component3);
         print("Compile took ${stopwatch.elapsedMilliseconds} ms");
 
-        util.postProcess(component3);
+        List<int> thisWholeComponent = util.postProcess(component3);
         print("*****\n\ncomponent3:\n"
             "${componentToStringSdkFiltered(component3)}\n\n\n");
+        if (world["compareWithFromScratch"] == true) {
+          checkIsEqual(newestWholeComponentData, thisWholeComponent);
+        }
         checkErrorsAndWarnings(prevFormattedErrors, formattedErrors,
             prevFormattedWarnings, formattedWarnings);
 
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
index ac0bdc2..61a26a4 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.expect
@@ -46,3 +46,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///annotations.dart:
 - pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart:188:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
index ac0bdc2..61a26a4 100644
--- a/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/annotations.dart.weak.transformed.expect
@@ -46,3 +46,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///annotations.dart:
 - pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart:188:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
index 12996fd..13b1fa7 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
@@ -515,6 +515,7 @@
 org-dartlang-testcase:///const_collections.dart:
 - CustomIterable. (from org-dartlang-testcase:///const_collections.dart:79:9)
 - IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:219:9)
-- WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
+- Iterable. (from org-dartlang-sdk:///sdk/lib/core/iterable.dart:87:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
 - CustomMap. (from org-dartlang-testcase:///const_collections.dart:84:9)
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
index dd0ac62..f8c5584 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
@@ -515,6 +515,7 @@
 org-dartlang-testcase:///const_collections.dart:
 - CustomIterable. (from org-dartlang-testcase:///const_collections.dart:79:9)
 - IterableBase. (from org-dartlang-sdk:///sdk/lib/collection/iterable.dart:219:9)
-- WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
+- Iterable. (from org-dartlang-sdk:///sdk/lib/core/iterable.dart:87:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- WithEquals. (from org-dartlang-testcase:///const_collections.dart:72:9)
 - CustomMap. (from org-dartlang-testcase:///const_collections.dart:84:9)
diff --git a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
index be60587..75eedd4 100644
--- a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.expect
@@ -132,6 +132,7 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_constructor_coverage.dart:
 - Foo. (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:9:15)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Foo.named1 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:10:15)
 - Foo.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:11:15)
 - Foo.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:12:15)
@@ -147,8 +148,8 @@
 - Foo.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:12:15)
 
 org-dartlang-testcase:///const_constructor_coverage_lib2.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Bar.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:20:15)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Baz.named4 (from org-dartlang-testcase:///const_constructor_coverage_lib2.dart:13:15)
 - Foo.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:11:15)
 - Bar.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:19:15)
diff --git a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
index be60587..75eedd4 100644
--- a/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_constructor_coverage.dart.weak.transformed.expect
@@ -132,6 +132,7 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_constructor_coverage.dart:
 - Foo. (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:9:15)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Foo.named1 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:10:15)
 - Foo.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:11:15)
 - Foo.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:12:15)
@@ -147,8 +148,8 @@
 - Foo.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:12:15)
 
 org-dartlang-testcase:///const_constructor_coverage_lib2.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Bar.named3 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:20:15)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Baz.named4 (from org-dartlang-testcase:///const_constructor_coverage_lib2.dart:13:15)
 - Foo.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:11:15)
 - Bar.named2 (from org-dartlang-testcase:///const_constructor_coverage_lib1.dart:19:15)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
index 8a9abbe..65655e9 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.expect
@@ -131,7 +131,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///various_2.dart:
 - Class. (from org-dartlang-testcase:///various_2_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///various_2_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///various_2_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
index 2830193..8f668a2 100644
--- a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various_2.dart.weak.transformed.expect
@@ -140,7 +140,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///various_2.dart:
 - Class. (from org-dartlang-testcase:///various_2_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///various_2_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///various_2_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/external_import.dart.weak.expect b/pkg/front_end/testcases/general/external_import.dart.weak.expect
index 36d348d1..b4adba8 100644
--- a/pkg/front_end/testcases/general/external_import.dart.weak.expect
+++ b/pkg/front_end/testcases/general/external_import.dart.weak.expect
@@ -38,3 +38,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///external_import.dart:
 - ExternalName. (from org-dartlang-sdk:///sdk/lib/internal/internal.dart:92:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect b/pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect
index 36d348d1..b4adba8 100644
--- a/pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect
@@ -38,3 +38,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///external_import.dart:
 - ExternalName. (from org-dartlang-sdk:///sdk/lib/internal/internal.dart:92:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.weak.expect b/pkg/front_end/testcases/general/ffi_sample.dart.weak.expect
index 1ab807f..6895041 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.weak.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.weak.expect
@@ -41,3 +41,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect b/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
index 043e13c..87aad44 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
@@ -75,3 +75,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue31767.dart.weak.expect b/pkg/front_end/testcases/general/issue31767.dart.weak.expect
index 02fa3bd..af92d7d 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.weak.expect
@@ -128,7 +128,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///issue31767.dart:
 - _A. (from org-dartlang-testcase:///issue31767_lib.dart:20:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///issue31767_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - _A. (from org-dartlang-testcase:///issue31767_lib.dart:20:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
index e2ec61f..18bee70 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.weak.transformed.expect
@@ -128,7 +128,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///issue31767.dart:
 - _A. (from org-dartlang-testcase:///issue31767_lib.dart:20:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///issue31767_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - _A. (from org-dartlang-testcase:///issue31767_lib.dart:20:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
index ba331a8..ed97aea 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
@@ -51,9 +51,5 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - Bar. (from org-dartlang-testcase:///bar_lib.dart:8:9)
-
-org-dartlang-testcase:///foo_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
-
-org-dartlang-testcase:///bar_lib.dart:
 - Foo. (from org-dartlang-testcase:///foo_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
index 4769a26..f7ed607 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
@@ -51,9 +51,5 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - Bar. (from org-dartlang-testcase:///bar_lib.dart:8:9)
-
-org-dartlang-testcase:///foo_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
-
-org-dartlang-testcase:///bar_lib.dart:
 - Foo. (from org-dartlang-testcase:///foo_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
index 8c7b289..16d5138 100644
--- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.expect
@@ -58,3 +58,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///origin_lib.dart:
 - pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart:188:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
index 8c7b289..16d5138 100644
--- a/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45101/main.dart.weak.transformed.expect
@@ -58,3 +58,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///origin_lib.dart:
 - pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart:188:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
index 9c0b260..2acc3f1 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.expect
@@ -60,10 +60,8 @@
 
 
 Constructor coverage from constants:
-org-dartlang-testcase:///const_lib.dart:
+org-dartlang-testcase:///main.dart:
+- B. (from org-dartlang-testcase:///const_lib.dart:16:9)
 - _B&A&M. (from org-dartlang-testcase:///const_lib.dart:15:7)
 - A. (from org-dartlang-testcase:///const_lib.dart:6:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
-
-org-dartlang-testcase:///main.dart:
-- B. (from org-dartlang-testcase:///const_lib.dart:16:9)
diff --git a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
index 9c0b260..2acc3f1 100644
--- a/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/with_dependencies/issue43538/main.dart.weak.transformed.expect
@@ -60,10 +60,8 @@
 
 
 Constructor coverage from constants:
-org-dartlang-testcase:///const_lib.dart:
+org-dartlang-testcase:///main.dart:
+- B. (from org-dartlang-testcase:///const_lib.dart:16:9)
 - _B&A&M. (from org-dartlang-testcase:///const_lib.dart:15:7)
 - A. (from org-dartlang-testcase:///const_lib.dart:6:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
-
-org-dartlang-testcase:///main.dart:
-- B. (from org-dartlang-testcase:///const_lib.dart:16:9)
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml
new file mode 100644
index 0000000..4141487
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml
@@ -0,0 +1,43 @@
+# Copyright (c) 2021, 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.md file.
+
+# This previously caused different serialized bytes because of a bug in
+# "constantCoverageConstructors" on sources (where C would be marked in lib
+# both before and after the reload).
+
+type: newworld
+worlds:
+  - entry: main.dart
+    sources:
+      main.dart: |
+        import "lib.dart";
+
+        main() {
+          const c = const C();
+          print(c);
+        }
+      lib.dart: |
+        class A {
+          const A();
+        }
+
+        class B implements A {
+          const B();
+        }
+
+        class C extends B {
+          const C([A a = const A()]) : super();
+        }
+
+    expectedLibraryCount: 2
+  - entry: main.dart
+    compareWithFromScratch: true
+    worldType: updated
+    expectInitializeFromDill: false
+    invalidate:
+      - main.dart
+    sources:
+      main.dart: |
+        import 'lib.dart';
+    expectedLibraryCount: 2
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect
new file mode 100644
index 0000000..8014659
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect
@@ -0,0 +1,51 @@
+main = main::main;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  class A extends dart.core::Object /*hasConstConstructor*/  {
+    const constructor •() → lib::A*
+      : super dart.core::Object::•()
+      ;
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  class B extends dart.core::Object implements lib::A /*hasConstConstructor*/  {
+    const constructor •() → lib::B*
+      : super dart.core::Object::•()
+      ;
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  class C extends lib::B /*hasConstConstructor*/  {
+    const constructor •([lib::A* a = #C1]) → lib::C*
+      : super lib::B::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "org-dartlang-test:///lib.dart";
+
+  static method main() → dynamic {
+    dart.core::print(#C2);
+  }
+}
+constants  {
+  #C1 = lib::A {}
+  #C2 = lib::C {}
+}
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect
new file mode 100644
index 0000000..36461a4
--- /dev/null
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect
@@ -0,0 +1,47 @@
+main = <No Member>;
+library from "org-dartlang-test:///lib.dart" as lib {
+
+  class A extends dart.core::Object /*hasConstConstructor*/  {
+    const constructor •() → lib::A*
+      : super dart.core::Object::•()
+      ;
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  class B extends dart.core::Object implements lib::A /*hasConstConstructor*/  {
+    const constructor •() → lib::B*
+      : super dart.core::Object::•()
+      ;
+    abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
+    abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
+    abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
+    abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfTrue
+    abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOfFalse
+    abstract member-signature operator ==(dynamic other) → dart.core::bool*; -> dart.core::Object::==
+    abstract member-signature get hashCode() → dart.core::int*; -> dart.core::Object::hashCode
+    abstract member-signature method toString() → dart.core::String*; -> dart.core::Object::toString
+    abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
+    abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
+  }
+  class C extends lib::B /*hasConstConstructor*/  {
+    const constructor •([lib::A* a = #C1]) → lib::C*
+      : super lib::B::•()
+      ;
+  }
+}
+library from "org-dartlang-test:///main.dart" as main {
+
+  import "org-dartlang-test:///lib.dart";
+
+}
+constants  {
+  #C1 = lib::A {}
+}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
index 0e0cfb3..d1fd5fe 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
@@ -111,7 +111,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
index 0e0cfb3..d1fd5fe 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
@@ -111,7 +111,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
index 759f798..3adb498 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
@@ -111,7 +111,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
index 759f798..3adb498 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
@@ -111,7 +111,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.expect
index ff96753..8fae114 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.expect
@@ -35,3 +35,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
index c313fec..218baf4 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
@@ -66,3 +66,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.expect
index ff96753..8fae114 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.expect
@@ -35,3 +35,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
index c313fec..218baf4 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
@@ -66,3 +66,6 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_sample.dart:
 - Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:122:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:34:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.expect
index 385e300..0a88f78 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.expect
@@ -26,3 +26,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
index 157a41b..434c3ba 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
@@ -53,3 +53,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.expect
index 8e37bb2..c47d067 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.expect
@@ -26,3 +26,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
index dedc171..e69f765 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
@@ -53,3 +53,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
index 0275472..a4505cf3 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.expect
@@ -34,3 +34,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
index bb7ab61a..ca13a1b 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.strong.transformed.expect
@@ -85,3 +85,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
index 8045c2f..3139773 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.expect
@@ -34,3 +34,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
index 1ba5718..9adff37 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array_multi_dimensional.dart.weak.transformed.expect
@@ -85,3 +85,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:
 - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart:136:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
index 92077f0..50d1579 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.expect
@@ -111,9 +111,9 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_canonical_type.dart:
 - A. (from org-dartlang-testcase:///const_canonical_type_lib.dart:10:9)
-- Check. (from org-dartlang-testcase:///const_canonical_type.dart:11:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Check. (from org-dartlang-testcase:///const_canonical_type.dart:11:9)
 
 org-dartlang-testcase:///const_canonical_type_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - A. (from org-dartlang-testcase:///const_canonical_type_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
index 92077f0..50d1579 100644
--- a/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/const_canonical_type.dart.weak.transformed.expect
@@ -111,9 +111,9 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///const_canonical_type.dart:
 - A. (from org-dartlang-testcase:///const_canonical_type_lib.dart:10:9)
-- Check. (from org-dartlang-testcase:///const_canonical_type.dart:11:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Check. (from org-dartlang-testcase:///const_canonical_type.dart:11:9)
 
 org-dartlang-testcase:///const_canonical_type_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - A. (from org-dartlang-testcase:///const_canonical_type_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
index f32fd42..991d33b 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.expect
@@ -138,6 +138,7 @@
 
 org-dartlang-testcase:///constant_null_is_lib.dart:
 - Class.constructor1 (from org-dartlang-testcase:///constant_null_is.dart:39:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class.constructor2 (from org-dartlang-testcase:///constant_null_is.dart:40:9)
 - Class.constructor3 (from org-dartlang-testcase:///constant_null_is.dart:41:9)
 - Class.constructor4 (from org-dartlang-testcase:///constant_null_is.dart:42:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
index cb3fea5..10a3c61 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constant_null_is.dart.weak.transformed.expect
@@ -157,6 +157,7 @@
 
 org-dartlang-testcase:///constant_null_is_lib.dart:
 - Class.constructor1 (from org-dartlang-testcase:///constant_null_is.dart:39:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class.constructor2 (from org-dartlang-testcase:///constant_null_is.dart:40:9)
 - Class.constructor3 (from org-dartlang-testcase:///constant_null_is.dart:41:9)
 - Class.constructor4 (from org-dartlang-testcase:///constant_null_is.dart:42:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
index 584622a..22db152 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
@@ -101,7 +101,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
index 584622a..22db152 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
@@ -101,7 +101,8 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///constants.dart:
 - Class. (from org-dartlang-testcase:///constants_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 
 org-dartlang-testcase:///constants_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class. (from org-dartlang-testcase:///constants_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
index c8d8780..e1d738d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.expect
@@ -129,14 +129,15 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - Class1._ (from org-dartlang-testcase:///opt_in_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class2._ (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - Class3._ (from org-dartlang-testcase:///opt_in_lib.dart:26:9)
 - Class4._ (from org-dartlang-testcase:///opt_in_lib.dart:34:9)
 - Class5._ (from org-dartlang-testcase:///opt_in_lib.dart:42:9)
 
 org-dartlang-testcase:///opt_in_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class1._ (from org-dartlang-testcase:///opt_in_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class2._ (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - Class3._ (from org-dartlang-testcase:///opt_in_lib.dart:26:9)
 - Class4._ (from org-dartlang-testcase:///opt_in_lib.dart:34:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
index 93eb282..e67696e 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_factory/main.dart.weak.transformed.expect
@@ -129,14 +129,15 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - Class1._ (from org-dartlang-testcase:///opt_in_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class2._ (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - Class3._ (from org-dartlang-testcase:///opt_in_lib.dart:26:9)
 - Class4._ (from org-dartlang-testcase:///opt_in_lib.dart:34:9)
 - Class5._ (from org-dartlang-testcase:///opt_in_lib.dart:42:9)
 
 org-dartlang-testcase:///opt_in_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class1._ (from org-dartlang-testcase:///opt_in_lib.dart:10:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - Class2._ (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - Class3._ (from org-dartlang-testcase:///opt_in_lib.dart:26:9)
 - Class4._ (from org-dartlang-testcase:///opt_in_lib.dart:34:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
index 7ffad38..0c9e63d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.expect
@@ -91,11 +91,9 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - CP._ (from org-dartlang-testcase:///opt_in_lib.dart:14:9)
+- P._ (from org-dartlang-testcase:///opt_in_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - XToken. (from org-dartlang-testcase:///main.dart:12:9)
 - Token. (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - VP._ (from org-dartlang-testcase:///opt_in_lib.dart:27:9)
 - M. (from org-dartlang-testcase:///opt_in_lib.dart:36:9)
-
-org-dartlang-testcase:///opt_in_lib.dart:
-- P._ (from org-dartlang-testcase:///opt_in_lib.dart:8:9)
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
index f4c2c29..7b1f0d6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/object_bound_redirecting_factory/main.dart.weak.transformed.expect
@@ -91,11 +91,9 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///main.dart:
 - CP._ (from org-dartlang-testcase:///opt_in_lib.dart:14:9)
+- P._ (from org-dartlang-testcase:///opt_in_lib.dart:8:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - XToken. (from org-dartlang-testcase:///main.dart:12:9)
 - Token. (from org-dartlang-testcase:///opt_in_lib.dart:18:9)
 - VP._ (from org-dartlang-testcase:///opt_in_lib.dart:27:9)
 - M. (from org-dartlang-testcase:///opt_in_lib.dart:36:9)
-
-org-dartlang-testcase:///opt_in_lib.dart:
-- P._ (from org-dartlang-testcase:///opt_in_lib.dart:8:9)
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect
index 92274e4..7670aed 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect
@@ -43,3 +43,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///native_is_illegal.dart:
 - ExternalName. (from org-dartlang-sdk:///sdk/lib/internal/internal.dart:92:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect
index 92274e4..7670aed 100644
--- a/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect
@@ -43,3 +43,4 @@
 Constructor coverage from constants:
 org-dartlang-testcase:///native_is_illegal.dart:
 - ExternalName. (from org-dartlang-sdk:///sdk/lib/internal/internal.dart:92:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
index 5391261..25ed5db 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.weak.expect
@@ -214,6 +214,3 @@
 - D.foo (from org-dartlang-testcase:///issue_34403.dart:12:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - F.foo (from org-dartlang-testcase:///issue_34403_lib.dart:10:9)
-
-org-dartlang-testcase:///issue_34403_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
index 5391261..25ed5db 100644
--- a/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.weak.transformed.expect
@@ -214,6 +214,3 @@
 - D.foo (from org-dartlang-testcase:///issue_34403.dart:12:9)
 - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
 - F.foo (from org-dartlang-testcase:///issue_34403_lib.dart:10:9)
-
-org-dartlang-testcase:///issue_34403_lib.dart:
-- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/runtime/vm/bitmap.cc b/runtime/vm/bitmap.cc
index 1799816..06119e3 100644
--- a/runtime/vm/bitmap.cc
+++ b/runtime/vm/bitmap.cc
@@ -20,11 +20,12 @@
       // First bit index (in the byte) to be cleared.
       intptr_t bit_index = new_length & (kBitsPerByte - 1);
       intptr_t mask = (1 << bit_index) - 1;
-      data_[byte_offset] &= mask;
+      BackingStore()[byte_offset] &= mask;
       // Clear the rest.
       ++byte_offset;
       if (byte_offset < data_size_in_bytes_) {
-        memset(&data_[byte_offset], 0, data_size_in_bytes_ - byte_offset);
+        memset(&BackingStore()[byte_offset], 0,
+               data_size_in_bytes_ - byte_offset);
       }
     }
   }
@@ -50,15 +51,17 @@
   if (value) {
     if (!InBackingStore(bit_offset)) {
       intptr_t byte_offset = bit_offset >> kBitsPerByteLog2;
-      uint8_t* old_data = data_;
+      uint8_t* old_data = BackingStore();
       intptr_t old_size = data_size_in_bytes_;
       data_size_in_bytes_ =
           Utils::RoundUp(byte_offset + 1, kIncrementSizeInBytes);
       ASSERT(data_size_in_bytes_ > 0);
-      data_ = Thread::Current()->zone()->Alloc<uint8_t>(data_size_in_bytes_);
-      ASSERT(data_ != NULL);
-      memmove(data_, old_data, old_size);
-      memset(&data_[old_size], 0, (data_size_in_bytes_ - old_size));
+      // Note: do not update data_ yet because it might overwrite old_data
+      // contents.
+      uint8_t* new_data = AllocBackingStore(data_size_in_bytes_);
+      memmove(new_data, old_data, old_size);
+      memset(&new_data[old_size], 0, (data_size_in_bytes_ - old_size));
+      data_.ptr_ = new_data;
     }
     ASSERT(InBackingStore(bit_offset));
   }
@@ -107,12 +110,11 @@
   // appending trailing zeroes are cleared to ensure deterministic snapshots.
   if (extra_size == 0 && Length() % kBitsPerByte != 0) {
     const int8_t mask = (1 << (Length() % kBitsPerByte)) - 1;
-    ASSERT_EQUAL(data_[payload_size - 1], (data_[payload_size - 1] & mask));
+    ASSERT_EQUAL(BackingStore()[payload_size - 1],
+                 (BackingStore()[payload_size - 1] & mask));
   }
 #endif
-  for (intptr_t i = 0; i < payload_size; i++) {
-    stream->WriteByte(data_[i]);
-  }
+  stream->WriteBytes(BackingStore(), payload_size);
   for (intptr_t i = 0; i < extra_size; i++) {
     stream->WriteByte(0U);
   }
@@ -126,8 +128,7 @@
   ASSERT(byte_offset < data_size_in_bytes_);
   intptr_t bit_remainder = bit_offset & (kBitsPerByte - 1);
   uint8_t mask = 1U << bit_remainder;
-  ASSERT(data_ != NULL);
-  return ((data_[byte_offset] & mask) != 0);
+  return ((BackingStore()[byte_offset] & mask) != 0);
 }
 
 void BitmapBuilder::SetBit(intptr_t bit_offset, bool value) {
@@ -141,11 +142,10 @@
   ASSERT(byte_offset < data_size_in_bytes_);
   intptr_t bit_remainder = bit_offset & (kBitsPerByte - 1);
   uint8_t mask = 1U << bit_remainder;
-  ASSERT(data_ != NULL);
   if (value) {
-    data_[byte_offset] |= mask;
+    BackingStore()[byte_offset] |= mask;
   } else {
-    data_[byte_offset] &= ~mask;
+    BackingStore()[byte_offset] &= ~mask;
   }
 }
 
diff --git a/runtime/vm/bitmap.h b/runtime/vm/bitmap.h
index 1fce760..186f1e6 100644
--- a/runtime/vm/bitmap.h
+++ b/runtime/vm/bitmap.h
@@ -17,12 +17,18 @@
 // pointer map description of a stack).
 class BitmapBuilder : public ZoneAllocated {
  public:
-  BitmapBuilder()
-      : length_(0),
-        data_size_in_bytes_(kInitialSizeInBytes),
-        data_(ThreadState::Current()->zone()->Alloc<uint8_t>(
-            kInitialSizeInBytes)) {
-    memset(data_, 0, kInitialSizeInBytes);
+  BitmapBuilder() : length_(0), data_size_in_bytes_(kInlineCapacityInBytes) {
+    memset(data_.inline_, 0, data_size_in_bytes_);
+  }
+
+  BitmapBuilder(const BitmapBuilder& other)
+      : length_(other.length_), data_size_in_bytes_(other.data_size_in_bytes_) {
+    if (data_size_in_bytes_ == kInlineCapacityInBytes) {
+      memmove(data_.inline_, other.data_.inline_, kInlineCapacityInBytes);
+    } else {
+      data_.ptr_ = AllocBackingStore(data_size_in_bytes_);
+      memmove(data_.ptr_, other.data_.ptr_, data_size_in_bytes_);
+    }
   }
 
   intptr_t Length() const { return length_; }
@@ -47,8 +53,8 @@
   void AppendAsBytesTo(BaseWriteStream* stream) const;
 
  private:
-  static const intptr_t kInitialSizeInBytes = 16;
-  static const intptr_t kIncrementSizeInBytes = 16;
+  static constexpr intptr_t kIncrementSizeInBytes = 16;
+  static constexpr intptr_t kInlineCapacityInBytes = 16;
 
   bool InRange(intptr_t offset) const {
     if (offset < 0) {
@@ -65,6 +71,20 @@
     return byte_offset < data_size_in_bytes_;
   }
 
+  uint8_t* BackingStore() {
+    return data_size_in_bytes_ == kInlineCapacityInBytes ? &data_.inline_[0]
+                                                         : data_.ptr_;
+  }
+
+  const uint8_t* BackingStore() const {
+    return data_size_in_bytes_ == kInlineCapacityInBytes ? &data_.inline_[0]
+                                                         : data_.ptr_;
+  }
+
+  static uint8_t* AllocBackingStore(intptr_t size_in_bytes) {
+    return ThreadState::Current()->zone()->Alloc<uint8_t>(size_in_bytes);
+  }
+
   // Get/Set a bit that is known to be covered by the backing store.
   bool GetBit(intptr_t bit_offset) const;
   void SetBit(intptr_t bit_offset, bool value);
@@ -74,9 +94,10 @@
   // Backing store for the bitmap.  Reading bits beyond the backing store
   // (up to length_) is allowed and they are assumed to be false.
   intptr_t data_size_in_bytes_;
-  uint8_t* data_;
-
-  DISALLOW_COPY_AND_ASSIGN(BitmapBuilder);
+  union {
+    uint8_t* ptr_;
+    uint8_t inline_[kInlineCapacityInBytes];
+  } data_;
 };
 
 }  // namespace dart
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index 6b2d7d8..5ecdd9e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -949,36 +949,16 @@
     ASSERT(registers != NULL);
     const intptr_t kFpuRegisterSpillFactor =
         kFpuRegisterSize / compiler::target::kWordSize;
-    intptr_t saved_registers_size = 0;
     const bool using_shared_stub = locs->call_on_shared_slow_path();
-    if (using_shared_stub) {
-      saved_registers_size =
-          Utils::CountOneBitsWord(kDartAvailableCpuRegs) +
-          (registers->FpuRegisterCount() > 0
-               ? kFpuRegisterSpillFactor * kNumberOfFpuRegisters
-               : 0) +
-          1 /*saved PC*/;
-    } else {
-      saved_registers_size =
-          registers->CpuRegisterCount() +
-          (registers->FpuRegisterCount() * kFpuRegisterSpillFactor);
-    }
 
-    BitmapBuilder* bitmap = locs->stack_bitmap();
+    BitmapBuilder bitmap(locs->stack_bitmap());
 
-    // An instruction may have two safepoints in deferred code. The
-    // call to RecordSafepoint has the side-effect of appending the live
-    // registers to the bitmap. This is why the second call to RecordSafepoint
-    // with the same instruction (and same location summary) sees a bitmap that
-    // is larger that StackSize(). It will never be larger than StackSize() +
-    // unboxed_arg_bits_count + live_registers_size.
-    // The first safepoint will grow the bitmap to be the size of
-    // spill_area_size but the second safepoint will truncate the bitmap and
-    // append the bits for arguments and live registers to it again.
-    const intptr_t bitmap_previous_length = bitmap->Length();
-    bitmap->SetLength(spill_area_size);
-
-    intptr_t unboxed_arg_bits_count = 0;
+    // Expand the bitmap to cover the whole area reserved for spill slots.
+    // (register allocator takes care of marking slots containing live tagged
+    // values but it does not do the same for other slots so length might be
+    // below spill_area_size at this point).
+    RELEASE_ASSERT(bitmap.Length() <= spill_area_size);
+    bitmap.SetLength(spill_area_size);
 
     auto instr = current_instruction();
     const intptr_t args_count = instr->ArgumentCount();
@@ -989,18 +969,16 @@
           instr->ArgumentValueAt(i)->instruction()->AsPushArgument();
       switch (push_arg->representation()) {
         case kUnboxedInt64:
-          bitmap->SetRange(
-              bitmap->Length(),
-              bitmap->Length() + compiler::target::kIntSpillFactor - 1, false);
-          unboxed_arg_bits_count += compiler::target::kIntSpillFactor;
+          bitmap.SetRange(
+              bitmap.Length(),
+              bitmap.Length() + compiler::target::kIntSpillFactor - 1, false);
           pushed_unboxed = true;
           break;
         case kUnboxedDouble:
-          bitmap->SetRange(
-              bitmap->Length(),
-              bitmap->Length() + compiler::target::kDoubleSpillFactor - 1,
+          bitmap.SetRange(
+              bitmap.Length(),
+              bitmap.Length() + compiler::target::kDoubleSpillFactor - 1,
               false);
-          unboxed_arg_bits_count += compiler::target::kDoubleSpillFactor;
           pushed_unboxed = true;
           break;
         case kTagged:
@@ -1012,17 +990,13 @@
             // postfix.
             continue;
           }
-          bitmap->Set(bitmap->Length(), true);
-          unboxed_arg_bits_count++;
+          bitmap.Set(bitmap.Length(), true);
           break;
         default:
           UNREACHABLE();
           break;
       }
     }
-    ASSERT(bitmap_previous_length <=
-           (spill_area_size + unboxed_arg_bits_count + saved_registers_size));
-
     ASSERT(slow_path_argument_count == 0 || !using_shared_stub);
 
     // Mark the bits in the stack map in the same order we push registers in
@@ -1043,7 +1017,7 @@
           FpuRegister reg = static_cast<FpuRegister>(i);
           if (regs->ContainsFpuRegister(reg)) {
             for (intptr_t j = 0; j < kFpuRegisterSpillFactor; ++j) {
-              bitmap->Set(bitmap->Length(), false);
+              bitmap.Set(bitmap.Length(), false);
             }
           }
         }
@@ -1054,7 +1028,7 @@
       for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; --i) {
         Register reg = static_cast<Register>(i);
         if (locs->live_registers()->ContainsRegister(reg)) {
-          bitmap->Set(bitmap->Length(), locs->live_registers()->IsTagged(reg));
+          bitmap.Set(bitmap.Length(), locs->live_registers()->IsTagged(reg));
         }
       }
     }
@@ -1063,29 +1037,28 @@
       // To simplify the code in the shared stub, we create an untagged hole
       // in the stack frame where the shared stub can leave the return address
       // before saving registers.
-      bitmap->Set(bitmap->Length(), false);
+      bitmap.Set(bitmap.Length(), false);
       if (registers->FpuRegisterCount() > 0) {
-        bitmap->SetRange(bitmap->Length(),
-                         bitmap->Length() +
-                             kNumberOfFpuRegisters * kFpuRegisterSpillFactor -
-                             1,
-                         false);
+        bitmap.SetRange(bitmap.Length(),
+                        bitmap.Length() +
+                            kNumberOfFpuRegisters * kFpuRegisterSpillFactor - 1,
+                        false);
       }
       for (intptr_t i = kNumberOfCpuRegisters - 1; i >= 0; --i) {
         if ((kReservedCpuRegisters & (1 << i)) != 0) continue;
         const Register reg = static_cast<Register>(i);
-        bitmap->Set(bitmap->Length(),
-                    locs->live_registers()->ContainsRegister(reg) &&
-                        locs->live_registers()->IsTagged(reg));
+        bitmap.Set(bitmap.Length(),
+                   locs->live_registers()->ContainsRegister(reg) &&
+                       locs->live_registers()->IsTagged(reg));
       }
     }
 
     // Arguments pushed after live registers in the slow path are tagged.
     for (intptr_t i = 0; i < slow_path_argument_count; ++i) {
-      bitmap->Set(bitmap->Length(), true);
+      bitmap.Set(bitmap.Length(), true);
     }
 
-    compressed_stackmaps_builder_->AddEntry(assembler()->CodeSize(), bitmap,
+    compressed_stackmaps_builder_->AddEntry(assembler()->CodeSize(), &bitmap,
                                             spill_area_size);
   }
 }
diff --git a/runtime/vm/compiler/backend/linearscan.cc b/runtime/vm/compiler/backend/linearscan.cc
index d337219..d923216 100644
--- a/runtime/vm/compiler/backend/linearscan.cc
+++ b/runtime/vm/compiler/backend/linearscan.cc
@@ -471,7 +471,7 @@
   SafepointPosition* safepoint = first_safepoint();
   while (safepoint != NULL) {
     THR_Print("    Safepoint [%" Pd "]: ", safepoint->pos());
-    safepoint->locs()->stack_bitmap()->Print();
+    safepoint->locs()->stack_bitmap().Print();
     THR_Print("\n");
     safepoint = safepoint->next();
   }
diff --git a/runtime/vm/compiler/backend/locations.h b/runtime/vm/compiler/backend/locations.h
index 22b858f..11ffcdb 100644
--- a/runtime/vm/compiler/backend/locations.h
+++ b/runtime/vm/compiler/backend/locations.h
@@ -781,13 +781,8 @@
 
   void set_out(intptr_t index, Location loc);
 
-  BitmapBuilder* stack_bitmap() {
-    if (stack_bitmap_ == NULL) {
-      stack_bitmap_ = new BitmapBuilder();
-    }
-    return stack_bitmap_;
-  }
-  void SetStackBit(intptr_t index) { stack_bitmap()->Set(index, true); }
+  const BitmapBuilder& stack_bitmap() { return EnsureStackBitmap(); }
+  void SetStackBit(intptr_t index) { EnsureStackBitmap().Set(index, true); }
 
   bool always_calls() const {
     return contains_call_ == kCall || contains_call_ == kCallCalleeSafe;
@@ -820,6 +815,13 @@
 #endif
 
  private:
+  BitmapBuilder& EnsureStackBitmap() {
+    if (stack_bitmap_ == NULL) {
+      stack_bitmap_ = new BitmapBuilder();
+    }
+    return *stack_bitmap_;
+  }
+
   const intptr_t num_inputs_;
   Location* input_locations_;
   const intptr_t num_temps_;
diff --git a/tools/VERSION b/tools/VERSION
index e6616ec..5edc9e6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 277
+PRERELEASE 278
 PRERELEASE_PATCH 0
\ No newline at end of file