Version 2.14.0-292.0.dev

Merge commit '172e1bee707cf09b019d22e3d4ffa08582a03c44' into 'dev'
diff --git a/DEPS b/DEPS
index b72ee61..3cf9187 100644
--- a/DEPS
+++ b/DEPS
@@ -146,7 +146,7 @@
   "resource_rev": "6b79867d0becf5395e5819a75720963b8298e9a7",
   "root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
   "rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
-  "shelf_static_rev": "fa30419055279a00c9e428439b1abe362d18f25d",
+  "shelf_static_rev": "fb6b7d0ee4ad936a84e503ae6b3703cc99e61d52",
   "shelf_packages_handler_rev": "78302e67c035047e6348e692b0c1182131f0fe35",
   "shelf_proxy_tag": "v1.0.0",
   "shelf_rev": "46483f896cc4308ee3d8e997030ae799b72aa16a",
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index 43b4268..0e5ba49 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -546,7 +546,8 @@
   Future<List<AnalysisErrorFixes>> _computeAnalysisOptionsFixes(
       String file, int offset) async {
     var errorFixesList = <AnalysisErrorFixes>[];
-    var optionsFile = server.resourceProvider.getFile(file);
+    var resourceProvider = server.resourceProvider;
+    var optionsFile = resourceProvider.getFile(file);
     var content = _safelyRead(optionsFile);
     if (content == null) {
       return errorFixesList;
@@ -568,7 +569,8 @@
       return errorFixesList;
     }
     for (var error in errors) {
-      var generator = AnalysisOptionsFixGenerator(error, content, options);
+      var generator = AnalysisOptionsFixGenerator(
+          resourceProvider, error, content, options);
       var fixes = await generator.computeFixes();
       if (fixes.isNotEmpty) {
         fixes.sort(Fix.SORT_BY_RELEVANCE);
@@ -690,7 +692,8 @@
   Future<List<AnalysisErrorFixes>> _computePubspecFixes(
       String file, int offset) async {
     var errorFixesList = <AnalysisErrorFixes>[];
-    var pubspecFile = server.resourceProvider.getFile(file);
+    var resourceProvider = server.resourceProvider;
+    var pubspecFile = resourceProvider.getFile(file);
     var content = _safelyRead(pubspecFile);
     if (content == null) {
       return errorFixesList;
@@ -710,12 +713,12 @@
       yamlContent = YamlMap();
     }
     var validator =
-        PubspecValidator(server.resourceProvider, pubspecFile.createSource());
+        PubspecValidator(resourceProvider, pubspecFile.createSource());
     var session = driver.currentSession;
     var errors = validator.validate(yamlContent.nodes);
     for (var error in errors) {
-      var generator = PubspecFixGenerator(
-          server.resourceProvider, error, content, document);
+      var generator =
+          PubspecFixGenerator(resourceProvider, error, content, document);
       var fixes = await generator.computeFixes();
       if (fixes.isNotEmpty) {
         fixes.sort(Fix.SORT_BY_RELEVANCE);
diff --git a/pkg/analysis_server/lib/src/services/correction/change_workspace.dart b/pkg/analysis_server/lib/src/services/correction/change_workspace.dart
index c206924..a0af0ab 100644
--- a/pkg/analysis_server/lib/src/services/correction/change_workspace.dart
+++ b/pkg/analysis_server/lib/src/services/correction/change_workspace.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/analysis/session.dart';
+import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer_plugin/utilities/change_builder/change_workspace.dart';
 
 /// [ChangeWorkspace] based on sessions.
@@ -12,6 +13,9 @@
   DartChangeWorkspace(this.sessions);
 
   @override
+  ResourceProvider get resourceProvider => sessions.first.resourceProvider;
+
+  @override
   bool containsFile(String path) {
     for (var session in sessions) {
       if (session.analysisContext.contextRoot.isAnalyzed(path)) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart b/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
index 87ef1fa..d3b6ac3 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
@@ -10,6 +10,7 @@
 import 'package:analysis_server/src/utilities/yaml_node_locator.dart';
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/error/error.dart';
+import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/analysis_options/error/option_codes.dart';
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -21,6 +22,9 @@
 
 /// The generator used to generate fixes in analysis options files.
 class AnalysisOptionsFixGenerator {
+  /// The resource provider used to access the file system.
+  final ResourceProvider resourceProvider;
+
   final AnalysisError error;
 
   final int errorOffset;
@@ -35,7 +39,8 @@
 
   final List<Fix> fixes = <Fix>[];
 
-  AnalysisOptionsFixGenerator(this.error, this.content, this.options)
+  AnalysisOptionsFixGenerator(
+      this.resourceProvider, this.error, this.content, this.options)
       : errorOffset = error.offset,
         errorLength = error.length,
         lineInfo = LineInfo.fromContent(content);
@@ -169,7 +174,7 @@
     deletionRange ??=
         _lines(nodeToDelete.span.start.offset, nodeToDelete.span.end.offset);
     var builder = ChangeBuilder(
-      workspace: _NonDartChangeWorkspace(),
+      workspace: _NonDartChangeWorkspace(resourceProvider),
     );
 
     final deletionRange_final = deletionRange;
@@ -198,6 +203,11 @@
 
 class _NonDartChangeWorkspace implements ChangeWorkspace {
   @override
+  ResourceProvider resourceProvider;
+
+  _NonDartChangeWorkspace(this.resourceProvider);
+
+  @override
   bool containsFile(String path) {
     return true;
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart b/pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart
index 1a034ce..179e35a 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart
@@ -2,8 +2,6 @@
 // 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 'dart:math' as math;
-
 import 'package:_fe_analyzer_shared/src/scanner/characters.dart';
 import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
 import 'package:analysis_server/src/services/correction/fix/pubspec/fix_kind.dart';
@@ -138,8 +136,8 @@
   Future<void> _addNameEntry() async {
     var context = resourceProvider.pathContext;
     var packageName = _identifierFrom(context.basename(context.dirname(file)));
-    var builder =
-        ChangeBuilder(workspace: _NonDartChangeWorkspace(), eol: endOfLine);
+    var builder = ChangeBuilder(
+        workspace: _NonDartChangeWorkspace(resourceProvider), eol: endOfLine);
     var firstOffset = _initialOffset(document.contents);
     if (firstOffset < 0) {
       // The document contains a list, and we don't support converting it to a
@@ -185,17 +183,6 @@
         identical(next, $_);
   }
 
-  // ignore: unused_element
-  SourceRange _lines(int start, int end) {
-    var startLocation = lineInfo.getLocation(start);
-    var startOffset = lineInfo.getOffsetOfLine(startLocation.lineNumber - 1);
-    var endLocation = lineInfo.getLocation(end);
-    var endOffset = lineInfo.getOffsetOfLine(
-        math.min(endLocation.lineNumber, lineInfo.lineCount - 1));
-    return SourceRange(startOffset, endOffset - startOffset);
-  }
-
-  // ignore: unused_element
   int _offsetOfFirstKey(YamlMap map) {
     var firstOffset = -1;
     for (var key in map.nodeMap.keys) {
@@ -213,6 +200,11 @@
 
 class _NonDartChangeWorkspace implements ChangeWorkspace {
   @override
+  ResourceProvider resourceProvider;
+
+  _NonDartChangeWorkspace(this.resourceProvider);
+
+  @override
   bool containsFile(String path) {
     return true;
   }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart b/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
index 6090ba5..058fc31 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
@@ -44,7 +44,8 @@
     expect(errors, hasLength(1));
     var error = errors[0];
     var options = _parseYaml(content);
-    var generator = AnalysisOptionsFixGenerator(error, content, options);
+    var generator =
+        AnalysisOptionsFixGenerator(resourceProvider, error, content, options);
     return generator.computeFixes();
   }
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
index 15c9c4f..ab273d2 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
@@ -8,6 +8,7 @@
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/exception/exception.dart';
+import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart';
@@ -604,6 +605,9 @@
   _SingleSessionWorkspace(this.session);
 
   @override
+  ResourceProvider get resourceProvider => session.resourceProvider;
+
+  @override
   bool? containsFile(String path) {
     var analysisContext = session.analysisContext;
     return analysisContext.contextRoot.isAnalyzed(path);
diff --git a/pkg/analyzer_plugin/lib/utilities/change_builder/change_workspace.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_workspace.dart
index c89a52c..4a3bb9f 100644
--- a/pkg/analyzer_plugin/lib/utilities/change_builder/change_workspace.dart
+++ b/pkg/analyzer_plugin/lib/utilities/change_builder/change_workspace.dart
@@ -3,9 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/analysis/session.dart';
+import 'package:analyzer/file_system/file_system.dart';
 
 /// Information about the workspace in which change builders operate.
 abstract class ChangeWorkspace {
+  /// Return the resource provider used to access the file system.
+  ResourceProvider get resourceProvider;
+
   /// Return `true` if the file with the given [path] is in a context root.
   bool? containsFile(String path);
 
diff --git a/pkg/compiler/lib/src/inferrer/builder_kernel.dart b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
index 3a35294..6c90fb2 100644
--- a/pkg/compiler/lib/src/inferrer/builder_kernel.dart
+++ b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
@@ -1548,7 +1548,9 @@
     Selector selector = _elementMap.getSelector(node);
     if (_closedWorld.commonElements.isForeign(member)) {
       return handleForeignInvoke(node, member, arguments, selector);
-    } else if (_closedWorld.commonElements.isCreateSentinel(member)) {
+    } else if (!_options.useLegacySubtyping &&
+        _closedWorld.commonElements.isCreateSentinel(member)) {
+      // TODO(fishythefish): Support this for --no-sound-null-safety too.
       // `T createSentinel<T>()` ostensibly returns a `T` based on its static
       // type. However, we need to handle this specially for a couple of
       // reasons:
diff --git a/pkg/dartdev/test/analytics_test.dart b/pkg/dartdev/test/analytics_test.dart
index 304fc6a..83050f7 100644
--- a/pkg/dartdev/test/analytics_test.dart
+++ b/pkg/dartdev/test/analytics_test.dart
@@ -161,7 +161,7 @@
 
     test('format', () {
       final p = project(logAnalytics: true);
-      final result = p.runSync(['format', '-l80']);
+      final result = p.runSync(['format', '-l80', '.']);
       expect(extractAnalytics(result), [
         {
           'hitType': 'screenView',
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 88ccfad..d296cc7cb 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -1453,7 +1453,7 @@
   }
   ASSERT(next_new_cid == num_cids);
   RemapClassIds(old_to_new_cid.get());
-  RehashTypes();         // Types use cid's as part of their hashes.
+  RehashTypes();          // Types use cid's as part of their hashes.
   IG->RehashConstants();  // Const objects use cid's as part of their hashes.
 
   // Ensure any newly spawned isolate will apply this permutation map right
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index ddb8cf9..45a70dc 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -2896,7 +2896,7 @@
       }
       switch (call->function().recognized_kind()) {
         case MethodRecognizer::kByteDataFactory:
-        case MethodRecognizer::kLinkedHashMap_getData:
+        case MethodRecognizer::kLinkedHashBase_getData:
           return flow_graph->constant_null();
         default:
           break;
@@ -2917,7 +2917,7 @@
           break;
         }
 
-        case Slot::Kind::kLinkedHashMap_data:
+        case Slot::Kind::kLinkedHashBase_data:
           return flow_graph->constant_null();
 
         default:
@@ -6502,14 +6502,11 @@
       // Find the native location where this individual definition should be
       // moved to.
       const auto& def_target =
-          arg_target.payload_type().IsPrimitive()
-              ? arg_target
-              : arg_target.IsMultiple()
-                    ? *arg_target.AsMultiple().locations()[i]
-                    : arg_target.IsPointerToMemory()
-                          ? arg_target.AsPointerToMemory().pointer_location()
-                          : /*arg_target.IsStack()*/ arg_target.Split(
-                                zone_, num_defs, i);
+          arg_target.payload_type().IsPrimitive() ? arg_target
+          : arg_target.IsMultiple() ? *arg_target.AsMultiple().locations()[i]
+          : arg_target.IsPointerToMemory()
+              ? arg_target.AsPointerToMemory().pointer_location()
+              : /*arg_target.IsStack()*/ arg_target.Split(zone_, num_defs, i);
 
       ConstantTemporaryAllocator temp_alloc(temp);
       if (origin.IsConstant()) {
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 76ab69a..5eec5a4 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2788,8 +2788,8 @@
       Definition::InferRange(analysis, range);
       break;
 
-    case Slot::Kind::kLinkedHashMap_index:
-    case Slot::Kind::kLinkedHashMap_data:
+    case Slot::Kind::kLinkedHashBase_index:
+    case Slot::Kind::kLinkedHashBase_data:
     case Slot::Kind::kGrowableObjectArray_data:
     case Slot::Kind::kContext_parent:
     case Slot::Kind::kTypeArguments:
@@ -2834,9 +2834,9 @@
       break;
 
     case Slot::Kind::kClosure_hash:
-    case Slot::Kind::kLinkedHashMap_hash_mask:
-    case Slot::Kind::kLinkedHashMap_used_data:
-    case Slot::Kind::kLinkedHashMap_deleted_keys:
+    case Slot::Kind::kLinkedHashBase_hash_mask:
+    case Slot::Kind::kLinkedHashBase_used_data:
+    case Slot::Kind::kLinkedHashBase_deleted_keys:
       *range = Range(RangeBoundary::FromConstant(0), RangeBoundary::MaxSmi());
       break;
 
diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc
index f1821ce..cd8e80c 100644
--- a/runtime/vm/compiler/backend/slot.cc
+++ b/runtime/vm/compiler/backend/slot.cc
@@ -200,11 +200,11 @@
   case Slot::Kind::k##Class##_##Field:
       UNBOXED_NATIVE_SLOTS_LIST(UNBOXED_NATIVE_SLOT_CASE)
 #undef UNBOXED_NATIVE_SLOT_CASE
-    case Slot::Kind::kLinkedHashMap_index:
-    case Slot::Kind::kLinkedHashMap_data:
-    case Slot::Kind::kLinkedHashMap_hash_mask:
-    case Slot::Kind::kLinkedHashMap_used_data:
-    case Slot::Kind::kLinkedHashMap_deleted_keys:
+    case Slot::Kind::kLinkedHashBase_index:
+    case Slot::Kind::kLinkedHashBase_data:
+    case Slot::Kind::kLinkedHashBase_hash_mask:
+    case Slot::Kind::kLinkedHashBase_used_data:
+    case Slot::Kind::kLinkedHashBase_deleted_keys:
     case Slot::Kind::kArgumentsDescriptor_type_args_len:
     case Slot::Kind::kArgumentsDescriptor_positional_count:
     case Slot::Kind::kArgumentsDescriptor_count:
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 2198ba7..866e399 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -95,11 +95,11 @@
   V(TypedDataView, UntaggedTypedDataView, offset_in_bytes, Smi, FINAL)         \
   V(TypedDataView, UntaggedTypedDataView, data, Dynamic, FINAL)                \
   V(String, UntaggedString, length, Smi, FINAL)                                \
-  V(LinkedHashMap, UntaggedLinkedHashMap, index, TypedDataUint32Array, VAR)    \
-  V(LinkedHashMap, UntaggedLinkedHashMap, data, Array, VAR)                    \
-  V(LinkedHashMap, UntaggedLinkedHashMap, hash_mask, Smi, VAR)                 \
-  V(LinkedHashMap, UntaggedLinkedHashMap, used_data, Smi, VAR)                 \
-  V(LinkedHashMap, UntaggedLinkedHashMap, deleted_keys, Smi, VAR)              \
+  V(LinkedHashBase, UntaggedLinkedHashBase, index, TypedDataUint32Array, VAR)  \
+  V(LinkedHashBase, UntaggedLinkedHashBase, data, Array, VAR)                  \
+  V(LinkedHashBase, UntaggedLinkedHashBase, hash_mask, Smi, VAR)               \
+  V(LinkedHashBase, UntaggedLinkedHashBase, used_data, Smi, VAR)               \
+  V(LinkedHashBase, UntaggedLinkedHashBase, deleted_keys, Smi, VAR)            \
   V(ArgumentsDescriptor, UntaggedArray, type_args_len, Smi, FINAL)             \
   V(ArgumentsDescriptor, UntaggedArray, positional_count, Smi, FINAL)          \
   V(ArgumentsDescriptor, UntaggedArray, count, Smi, FINAL)                     \
@@ -338,7 +338,7 @@
   static const Slot& GetNativeSlot(Kind kind);
 
   const Kind kind_;
-  const int8_t flags_;  // is_immutable, is_nullable
+  const int8_t flags_;        // is_immutable, is_nullable
   const ClassIdTagType cid_;  // Concrete cid of a value or kDynamicCid.
 
   const intptr_t offset_in_bytes_;
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index dc96c4e..6968ff1 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -871,16 +871,16 @@
     case MethodRecognizer::kListFactory:
     case MethodRecognizer::kObjectArrayAllocate:
     case MethodRecognizer::kCopyRangeFromUint8ListToOneByteString:
-    case MethodRecognizer::kLinkedHashMap_getIndex:
-    case MethodRecognizer::kLinkedHashMap_setIndex:
-    case MethodRecognizer::kLinkedHashMap_getData:
-    case MethodRecognizer::kLinkedHashMap_setData:
-    case MethodRecognizer::kLinkedHashMap_getHashMask:
-    case MethodRecognizer::kLinkedHashMap_setHashMask:
-    case MethodRecognizer::kLinkedHashMap_getUsedData:
-    case MethodRecognizer::kLinkedHashMap_setUsedData:
-    case MethodRecognizer::kLinkedHashMap_getDeletedKeys:
-    case MethodRecognizer::kLinkedHashMap_setDeletedKeys:
+    case MethodRecognizer::kLinkedHashBase_getIndex:
+    case MethodRecognizer::kLinkedHashBase_setIndex:
+    case MethodRecognizer::kLinkedHashBase_getData:
+    case MethodRecognizer::kLinkedHashBase_setData:
+    case MethodRecognizer::kLinkedHashBase_getHashMask:
+    case MethodRecognizer::kLinkedHashBase_setHashMask:
+    case MethodRecognizer::kLinkedHashBase_getUsedData:
+    case MethodRecognizer::kLinkedHashBase_setUsedData:
+    case MethodRecognizer::kLinkedHashBase_getDeletedKeys:
+    case MethodRecognizer::kLinkedHashBase_setDeletedKeys:
     case MethodRecognizer::kWeakProperty_getKey:
     case MethodRecognizer::kWeakProperty_setKey:
     case MethodRecognizer::kWeakProperty_getValue:
@@ -1165,68 +1165,68 @@
       body += MemoryCopy(kTypedDataUint8ArrayCid, kOneByteStringCid);
       body += NullConstant();
       break;
-    case MethodRecognizer::kLinkedHashMap_getIndex:
+    case MethodRecognizer::kLinkedHashBase_getIndex:
       ASSERT(function.NumParameters() == 1);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
-      body += LoadNativeField(Slot::LinkedHashMap_index());
+      body += LoadNativeField(Slot::LinkedHashBase_index());
       break;
-    case MethodRecognizer::kLinkedHashMap_setIndex:
+    case MethodRecognizer::kLinkedHashBase_setIndex:
       ASSERT(function.NumParameters() == 2);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += LoadLocal(parsed_function_->RawParameterVariable(1));
-      body += StoreNativeField(Slot::LinkedHashMap_index());
+      body += StoreNativeField(Slot::LinkedHashBase_index());
       body += NullConstant();
       break;
-    case MethodRecognizer::kLinkedHashMap_getData:
+    case MethodRecognizer::kLinkedHashBase_getData:
       ASSERT(function.NumParameters() == 1);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
-      body += LoadNativeField(Slot::LinkedHashMap_data());
+      body += LoadNativeField(Slot::LinkedHashBase_data());
       break;
-    case MethodRecognizer::kLinkedHashMap_setData:
+    case MethodRecognizer::kLinkedHashBase_setData:
       ASSERT(function.NumParameters() == 2);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += LoadLocal(parsed_function_->RawParameterVariable(1));
-      body += StoreNativeField(Slot::LinkedHashMap_data());
+      body += StoreNativeField(Slot::LinkedHashBase_data());
       body += NullConstant();
       break;
-    case MethodRecognizer::kLinkedHashMap_getHashMask:
+    case MethodRecognizer::kLinkedHashBase_getHashMask:
       ASSERT(function.NumParameters() == 1);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
-      body += LoadNativeField(Slot::LinkedHashMap_hash_mask());
+      body += LoadNativeField(Slot::LinkedHashBase_hash_mask());
       break;
-    case MethodRecognizer::kLinkedHashMap_setHashMask:
+    case MethodRecognizer::kLinkedHashBase_setHashMask:
       ASSERT(function.NumParameters() == 2);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += LoadLocal(parsed_function_->RawParameterVariable(1));
-      body += StoreNativeField(Slot::LinkedHashMap_hash_mask(),
+      body += StoreNativeField(Slot::LinkedHashBase_hash_mask(),
                                StoreInstanceFieldInstr::Kind::kOther,
                                kNoStoreBarrier);
       body += NullConstant();
       break;
-    case MethodRecognizer::kLinkedHashMap_getUsedData:
+    case MethodRecognizer::kLinkedHashBase_getUsedData:
       ASSERT(function.NumParameters() == 1);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
-      body += LoadNativeField(Slot::LinkedHashMap_used_data());
+      body += LoadNativeField(Slot::LinkedHashBase_used_data());
       break;
-    case MethodRecognizer::kLinkedHashMap_setUsedData:
+    case MethodRecognizer::kLinkedHashBase_setUsedData:
       ASSERT(function.NumParameters() == 2);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += LoadLocal(parsed_function_->RawParameterVariable(1));
-      body += StoreNativeField(Slot::LinkedHashMap_used_data(),
+      body += StoreNativeField(Slot::LinkedHashBase_used_data(),
                                StoreInstanceFieldInstr::Kind::kOther,
                                kNoStoreBarrier);
       body += NullConstant();
       break;
-    case MethodRecognizer::kLinkedHashMap_getDeletedKeys:
+    case MethodRecognizer::kLinkedHashBase_getDeletedKeys:
       ASSERT(function.NumParameters() == 1);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
-      body += LoadNativeField(Slot::LinkedHashMap_deleted_keys());
+      body += LoadNativeField(Slot::LinkedHashBase_deleted_keys());
       break;
-    case MethodRecognizer::kLinkedHashMap_setDeletedKeys:
+    case MethodRecognizer::kLinkedHashBase_setDeletedKeys:
       ASSERT(function.NumParameters() == 2);
       body += LoadLocal(parsed_function_->RawParameterVariable(0));
       body += LoadLocal(parsed_function_->RawParameterVariable(1));
-      body += StoreNativeField(Slot::LinkedHashMap_deleted_keys(),
+      body += StoreNativeField(Slot::LinkedHashBase_deleted_keys(),
                                StoreInstanceFieldInstr::Kind::kOther,
                                kNoStoreBarrier);
       body += NullConstant();
@@ -2607,7 +2607,7 @@
   TargetEntryInstr* is_covariant;
   loop_test_flag += BranchIfEqual(&is_noncovariant, &is_covariant);
 
-  Fragment(is_covariant) + Goto(next);  // Continue if covariant.
+  Fragment(is_covariant) + Goto(next);      // Continue if covariant.
   Fragment(is_noncovariant) + Goto(check);  // Check type if non-covariant.
 
   Fragment loop_prep_type_param(check);
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index 3810986..f45e224 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -148,16 +148,16 @@
   V(_Int32x4, _withFlagY, Int32x4WithFlagY, 0xa8cf9ba6)                        \
   V(_Int32x4, _withFlagZ, Int32x4WithFlagZ, 0xa8058854)                        \
   V(_Int32x4, _withFlagW, Int32x4WithFlagW, 0xb333f958)                        \
-  V(_HashVMBase, get:_index, LinkedHashMap_getIndex, 0x882671dc)               \
-  V(_HashVMBase, set:_index, LinkedHashMap_setIndex, 0xa2be9418)               \
-  V(_HashVMBase, get:_data, LinkedHashMap_getData, 0x780e14ad)                 \
-  V(_HashVMBase, set:_data, LinkedHashMap_setData, 0xb6a5c369)                 \
-  V(_HashVMBase, get:_usedData, LinkedHashMap_getUsedData, 0x470893ed)         \
-  V(_HashVMBase, set:_usedData, LinkedHashMap_setUsedData, 0xb3c887a9)         \
-  V(_HashVMBase, get:_hashMask, LinkedHashMap_getHashMask, 0x4f0ec79c)         \
-  V(_HashVMBase, set:_hashMask, LinkedHashMap_setHashMask, 0xbbcebb58)         \
-  V(_HashVMBase, get:_deletedKeys, LinkedHashMap_getDeletedKeys, 0x510dc4a0)   \
-  V(_HashVMBase, set:_deletedKeys, LinkedHashMap_setDeletedKeys, 0xbdcdb85c)   \
+  V(_HashVMBase, get:_index, LinkedHashBase_getIndex, 0x882671dc)              \
+  V(_HashVMBase, set:_index, LinkedHashBase_setIndex, 0xa2be9418)              \
+  V(_HashVMBase, get:_data, LinkedHashBase_getData, 0x780e14ad)                \
+  V(_HashVMBase, set:_data, LinkedHashBase_setData, 0xb6a5c369)                \
+  V(_HashVMBase, get:_usedData, LinkedHashBase_getUsedData, 0x470893ed)        \
+  V(_HashVMBase, set:_usedData, LinkedHashBase_setUsedData, 0xb3c887a9)        \
+  V(_HashVMBase, get:_hashMask, LinkedHashBase_getHashMask, 0x4f0ec79c)        \
+  V(_HashVMBase, set:_hashMask, LinkedHashBase_setHashMask, 0xbbcebb58)        \
+  V(_HashVMBase, get:_deletedKeys, LinkedHashBase_getDeletedKeys, 0x510dc4a0)  \
+  V(_HashVMBase, set:_deletedKeys, LinkedHashBase_setDeletedKeys, 0xbdcdb85c)  \
   V(_WeakProperty, get:key, WeakProperty_getKey, 0xde00e462)                   \
   V(_WeakProperty, set:key, WeakProperty_setKey, 0x963a095f)                   \
   V(_WeakProperty, get:value, WeakProperty_getValue, 0xd2f28aae)               \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 9af2bbf..fb22d3b 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -634,7 +634,7 @@
   static word NextFieldOffset();
 };
 
-class LinkedHashMap : public AllStatic {
+class LinkedHashBase : public AllStatic {
  public:
   static word index_offset();
   static word data_offset();
@@ -643,6 +643,10 @@
   static word deleted_keys_offset();
   static word type_arguments_offset();
   static word InstanceSize();
+};
+
+class LinkedHashMap : public LinkedHashBase {
+ public:
   static word NextFieldOffset();
 };
 
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index ccb1925..b57c17d 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -195,15 +195,15 @@
     IsolateGroup_cached_class_table_table_offset = 16;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 36;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 24;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     12;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 4;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     20;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -513,7 +513,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28;
 static constexpr dart::compiler::target::word Library_InstanceSize = 88;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     24;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -737,15 +737,15 @@
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 72;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 48;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 48;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     24;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     40;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -1061,7 +1061,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48;
 static constexpr dart::compiler::target::word Library_InstanceSize = 168;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -1284,15 +1284,15 @@
     IsolateGroup_cached_class_table_table_offset = 16;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 36;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 24;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     12;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 4;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     20;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -1599,7 +1599,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28;
 static constexpr dart::compiler::target::word Library_InstanceSize = 88;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     24;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -1823,15 +1823,15 @@
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 72;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 48;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 48;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     24;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     40;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -2148,7 +2148,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48;
 static constexpr dart::compiler::target::word Library_InstanceSize = 168;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -2371,15 +2371,15 @@
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 72;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 28;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     16;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     24;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -2695,7 +2695,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32;
 static constexpr dart::compiler::target::word Library_InstanceSize = 112;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -2918,15 +2918,15 @@
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_single_step_offset = 72;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 28;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     16;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     24;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -3243,7 +3243,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32;
 static constexpr dart::compiler::target::word Library_InstanceSize = 112;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -3462,15 +3462,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 16;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 24;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     12;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 4;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     20;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -3780,7 +3780,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28;
 static constexpr dart::compiler::target::word Library_InstanceSize = 88;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     24;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -3998,15 +3998,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 48;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 48;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     24;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     40;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -4322,7 +4322,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48;
 static constexpr dart::compiler::target::word Library_InstanceSize = 168;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -4539,15 +4539,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 16;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 24;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     12;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 4;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 4;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     20;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -4854,7 +4854,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28;
 static constexpr dart::compiler::target::word Library_InstanceSize = 88;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     24;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -5072,15 +5072,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 48;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 48;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     24;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     40;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -5397,7 +5397,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48;
 static constexpr dart::compiler::target::word Library_InstanceSize = 168;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -5614,15 +5614,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 28;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     16;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     24;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -5938,7 +5938,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32;
 static constexpr dart::compiler::target::word Library_InstanceSize = 112;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -6155,15 +6155,15 @@
 static constexpr dart::compiler::target::word
     IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20;
+static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_deleted_keys_offset = 28;
-static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset =
+    LinkedHashBase_deleted_keys_offset = 28;
+static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
     16;
-static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12;
+static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12;
 static constexpr dart::compiler::target::word
-    LinkedHashMap_type_arguments_offset = 8;
-static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset =
+    LinkedHashBase_type_arguments_offset = 8;
+static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset =
     24;
 static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
@@ -6480,7 +6480,7 @@
 static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32;
 static constexpr dart::compiler::target::word Library_InstanceSize = 112;
 static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24;
-static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32;
+static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32;
 static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize =
     48;
 static constexpr dart::compiler::target::word Mint_InstanceSize = 16;
@@ -6722,18 +6722,18 @@
 static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset =
     36;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 24;
+    AOT_LinkedHashBase_deleted_keys_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 12;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 12;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 4;
+    AOT_LinkedHashBase_type_arguments_offset = 4;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 20;
+    AOT_LinkedHashBase_used_data_offset = 20;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 8;
@@ -7081,7 +7081,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 84;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     28;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 24;
@@ -7329,18 +7329,18 @@
 static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset =
     72;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     32;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 48;
+    AOT_LinkedHashBase_deleted_keys_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 24;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 40;
+    AOT_LinkedHashBase_used_data_offset = 40;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -7691,7 +7691,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     56;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -7942,18 +7942,18 @@
 static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset =
     72;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     32;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 48;
+    AOT_LinkedHashBase_deleted_keys_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 24;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 40;
+    AOT_LinkedHashBase_used_data_offset = 40;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -8305,7 +8305,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     56;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -8552,18 +8552,18 @@
 static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset =
     72;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     20;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 28;
+    AOT_LinkedHashBase_deleted_keys_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 16;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     12;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 24;
+    AOT_LinkedHashBase_used_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -8914,7 +8914,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     32;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -9161,18 +9161,18 @@
 static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset =
     72;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     20;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 28;
+    AOT_LinkedHashBase_deleted_keys_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 16;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     12;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 24;
+    AOT_LinkedHashBase_used_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -9524,7 +9524,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     32;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -9766,18 +9766,18 @@
 static constexpr dart::compiler::target::word
     AOT_IsolateGroup_cached_class_table_table_offset = 16;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 24;
+    AOT_LinkedHashBase_deleted_keys_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 12;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 12;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 4;
+    AOT_LinkedHashBase_type_arguments_offset = 4;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 20;
+    AOT_LinkedHashBase_used_data_offset = 20;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 8;
@@ -10125,7 +10125,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 84;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     28;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 24;
@@ -10366,18 +10366,18 @@
 static constexpr dart::compiler::target::word
     AOT_IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     32;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 48;
+    AOT_LinkedHashBase_deleted_keys_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 24;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 40;
+    AOT_LinkedHashBase_used_data_offset = 40;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -10728,7 +10728,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     56;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -10972,18 +10972,18 @@
 static constexpr dart::compiler::target::word
     AOT_IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     32;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 48;
+    AOT_LinkedHashBase_deleted_keys_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 24;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     16;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 40;
+    AOT_LinkedHashBase_used_data_offset = 40;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -11335,7 +11335,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     56;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -11575,18 +11575,18 @@
 static constexpr dart::compiler::target::word
     AOT_IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     20;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 28;
+    AOT_LinkedHashBase_deleted_keys_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 16;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     12;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 24;
+    AOT_LinkedHashBase_used_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -11937,7 +11937,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     32;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
@@ -12177,18 +12177,18 @@
 static constexpr dart::compiler::target::word
     AOT_IsolateGroup_cached_class_table_table_offset = 32;
 static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
     20;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_deleted_keys_offset = 28;
+    AOT_LinkedHashBase_deleted_keys_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_hash_mask_offset = 16;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset =
+    AOT_LinkedHashBase_hash_mask_offset = 16;
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset =
     12;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_type_arguments_offset = 8;
+    AOT_LinkedHashBase_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_LinkedHashMap_used_data_offset = 24;
+    AOT_LinkedHashBase_used_data_offset = 24;
 static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0;
 static constexpr dart::compiler::target::word
     AOT_MarkingStackBlock_pointers_offset = 16;
@@ -12540,7 +12540,7 @@
 static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104;
 static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize =
     24;
-static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize =
+static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize =
     32;
 static constexpr dart::compiler::target::word
     AOT_MegamorphicCache_InstanceSize = 48;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index d943ed3..940f48d 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -156,12 +156,12 @@
   FIELD(IsolateGroup, cached_class_table_table_offset)                         \
   NOT_IN_PRODUCT(FIELD(Isolate, single_step_offset))                           \
   FIELD(Isolate, user_tag_offset)                                              \
-  FIELD(LinkedHashMap, data_offset)                                            \
-  FIELD(LinkedHashMap, deleted_keys_offset)                                    \
-  FIELD(LinkedHashMap, hash_mask_offset)                                       \
-  FIELD(LinkedHashMap, index_offset)                                           \
-  FIELD(LinkedHashMap, type_arguments_offset)                                  \
-  FIELD(LinkedHashMap, used_data_offset)                                       \
+  FIELD(LinkedHashBase, data_offset)                                           \
+  FIELD(LinkedHashBase, deleted_keys_offset)                                   \
+  FIELD(LinkedHashBase, hash_mask_offset)                                      \
+  FIELD(LinkedHashBase, index_offset)                                          \
+  FIELD(LinkedHashBase, type_arguments_offset)                                 \
+  FIELD(LinkedHashBase, used_data_offset)                                      \
   FIELD(LocalHandle, ptr_offset)                                               \
   FIELD(MarkingStackBlock, pointers_offset)                                    \
   FIELD(MarkingStackBlock, top_offset)                                         \
@@ -364,7 +364,7 @@
   SIZEOF(LanguageError, InstanceSize, UntaggedLanguageError)                   \
   SIZEOF(Library, InstanceSize, UntaggedLibrary)                               \
   SIZEOF(LibraryPrefix, InstanceSize, UntaggedLibraryPrefix)                   \
-  SIZEOF(LinkedHashMap, InstanceSize, UntaggedLinkedHashMap)                   \
+  SIZEOF(LinkedHashBase, InstanceSize, UntaggedLinkedHashBase)                 \
   SIZEOF(MegamorphicCache, InstanceSize, UntaggedMegamorphicCache)             \
   SIZEOF(Mint, InstanceSize, UntaggedMint)                                     \
   SIZEOF(MirrorReference, InstanceSize, UntaggedMirrorReference)               \
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 756db27..4b03928 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -585,8 +585,10 @@
     intptr_t cid = raw_obj->GetClassId();
     if (cid >= kNumPredefinedCids) {
       ASSERT(Instance::Cast(Object::Handle(raw_obj)).IsValidNativeIndex(0));
-      TypedDataPtr native_fields = *reinterpret_cast<TypedDataPtr*>(
-          UntaggedObject::ToAddr(raw_obj) + sizeof(UntaggedObject));
+      TypedDataPtr native_fields =
+          reinterpret_cast<CompressedTypedDataPtr*>(
+              UntaggedObject::ToAddr(raw_obj) + sizeof(UntaggedObject))
+              ->Decompress(raw_obj->heap_base());
       if (native_fields == TypedData::null()) {
         *value = 0;
       } else {
@@ -673,8 +675,10 @@
     // No native fields or mismatched native field count.
     return false;
   }
-  TypedDataPtr native_fields = *reinterpret_cast<TypedDataPtr*>(
-      UntaggedObject::ToAddr(raw_obj) + sizeof(UntaggedObject));
+  TypedDataPtr native_fields =
+      reinterpret_cast<CompressedTypedDataPtr*>(
+          UntaggedObject::ToAddr(raw_obj) + sizeof(UntaggedObject))
+          ->Decompress(raw_obj->heap_base());
   if (native_fields == TypedData::null()) {
     // Native fields not initialized.
     memset(field_values, 0, (num_fields * sizeof(field_values[0])));
diff --git a/runtime/vm/heap/become_test.cc b/runtime/vm/heap/become_test.cc
index a375486..bddba7f 100644
--- a/runtime/vm/heap/become_test.cc
+++ b/runtime/vm/heap/become_test.cc
@@ -101,7 +101,7 @@
 }
 
 ISOLATE_UNIT_TEST_CASE(BecomeForwardRememberedCards) {
-  const intptr_t length = Heap::kNewAllocatableSize / kWordSize;
+  const intptr_t length = Heap::kNewAllocatableSize / Array::kBytesPerElement;
   ASSERT(Array::UseCardMarkingForAllocation(length));
   const Array& card_remembered_array = Array::Handle(Array::New(length));
   EXPECT(card_remembered_array.ptr()->untag()->IsCardRemembered());
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 2ed011c..7cc8063 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -3712,8 +3712,7 @@
   V(IsExtensionMember, is_extension_member)
 // Bit that is updated after function is constructed, has to be updated in
 // concurrent-safe manner.
-#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(V)                                 \
-  V(Inlinable, is_inlinable)
+#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(V) V(Inlinable, is_inlinable)
 
 #define DEFINE_ACCESSORS(name, accessor_name)                                  \
   void set_##accessor_name(bool value) const {                                 \
@@ -3753,9 +3752,9 @@
 // Single bit sized fields start here.
 #define DECLARE_BIT(name, _) k##name##Bit,
     FOR_EACH_FUNCTION_KIND_BIT(DECLARE_BIT)
-    FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(DECLARE_BIT)
+        FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(DECLARE_BIT)
 #undef DECLARE_BIT
-        kNumTagBits
+            kNumTagBits
   };
 
   COMPILE_ASSERT(MethodRecognizer::kNumRecognizedMethods <
@@ -10832,17 +10831,21 @@
 
   static InstancePtr Data(const Instance& view_obj) {
     ASSERT(!view_obj.IsNull());
-    return *reinterpret_cast<InstancePtr const*>(view_obj.untag() +
-                                                 kDataOffset);
+    return reinterpret_cast<CompressedInstancePtr*>(
+               reinterpret_cast<uword>(view_obj.untag()) + data_offset())
+        ->Decompress(view_obj.untag()->heap_base());
   }
 
-  static intptr_t NumberOfFields() { return kDataOffset; }
+  static intptr_t NumberOfFields() { return kNumFields; }
 
-  static intptr_t data_offset() { return kWordSize * kDataOffset; }
+  static intptr_t data_offset() {
+    return sizeof(UntaggedObject) + (kCompressedWordSize * kDataIndex);
+  }
 
  private:
   enum {
-    kDataOffset = 1,
+    kDataIndex = 0,
+    kNumFields = 1,
   };
 };
 
@@ -10916,11 +10919,50 @@
   friend class Class;
 };
 
+class LinkedHashBase : public Instance {
+ public:
+  static intptr_t InstanceSize() {
+    return RoundedAllocationSize(sizeof(UntaggedLinkedHashBase));
+  }
+
+  static intptr_t type_arguments_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, type_arguments_);
+  }
+
+  static intptr_t index_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, index_);
+  }
+
+  static intptr_t data_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, data_);
+  }
+
+  static intptr_t hash_mask_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, hash_mask_);
+  }
+
+  static intptr_t used_data_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, used_data_);
+  }
+
+  static intptr_t deleted_keys_offset() {
+    return OFFSET_OF(UntaggedLinkedHashBase, deleted_keys_);
+  }
+
+ protected:
+  // Keep this in sync with Dart implementation (lib/compact_hash.dart).
+  static const intptr_t kInitialIndexBits = 2;
+  static const intptr_t kInitialIndexSize = 1 << (kInitialIndexBits + 1);
+
+  friend class Class;
+  friend class LinkedHashBaseDeserializationCluster;
+};
+
 // Corresponds to
 // - "new Map()",
 // - non-const map literals, and
 // - the default constructor of LinkedHashMap in dart:collection.
-class LinkedHashMap : public Instance {
+class LinkedHashMap : public LinkedHashBase {
  public:
   static intptr_t InstanceSize() {
     return RoundedAllocationSize(sizeof(UntaggedLinkedHashMap));
@@ -10946,48 +10988,30 @@
     // as canonical. See for example tests/isolate/message3_test.dart.
     untag()->set_type_arguments(value.ptr());
   }
-  static intptr_t type_arguments_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, type_arguments_);
-  }
 
   TypedDataPtr index() const { return untag()->index(); }
   void SetIndex(const TypedData& value) const {
     ASSERT(!value.IsNull());
     untag()->set_index(value.ptr());
   }
-  static intptr_t index_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, index_);
-  }
 
   ArrayPtr data() const { return untag()->data(); }
   void SetData(const Array& value) const { untag()->set_data(value.ptr()); }
-  static intptr_t data_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, data_);
-  }
 
   SmiPtr hash_mask() const { return untag()->hash_mask(); }
   void SetHashMask(intptr_t value) const {
     untag()->set_hash_mask(Smi::New(value));
   }
-  static intptr_t hash_mask_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, hash_mask_);
-  }
 
   SmiPtr used_data() const { return untag()->used_data(); }
   void SetUsedData(intptr_t value) const {
     untag()->set_used_data(Smi::New(value));
   }
-  static intptr_t used_data_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, used_data_);
-  }
 
   SmiPtr deleted_keys() const { return untag()->deleted_keys(); }
   void SetDeletedKeys(intptr_t value) const {
     untag()->set_deleted_keys(Smi::New(value));
   }
-  static intptr_t deleted_keys_offset() {
-    return OFFSET_OF(UntaggedLinkedHashMap, deleted_keys_);
-  }
 
   intptr_t Length() const {
     // The map may be uninitialized.
@@ -11038,11 +11062,7 @@
   };
 
  private:
-  FINAL_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap, Instance);
-
-  // Keep this in sync with Dart implementation (lib/compact_hash.dart).
-  static const intptr_t kInitialIndexBits = 2;
-  static const intptr_t kInitialIndexSize = 1 << (kInitialIndexBits + 1);
+  FINAL_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap, LinkedHashBase);
 
   // Allocate a map, but leave all fields set to null.
   // Used during deserialization (since map might contain itself as key/value).
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index fbbce4c..4d0bfbb 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -2113,8 +2113,8 @@
     TokenPosition begin_pos =
         TokenPosition::kNoSource;  // Token position of scope start.
     TokenPosition end_pos =
-        TokenPosition::kNoSource;   // Token position of scope end.
-    int16_t scope_id;               // Scope to which the variable belongs.
+        TokenPosition::kNoSource;  // Token position of scope end.
+    int16_t scope_id;              // Scope to which the variable belongs.
 
     VarInfoKind kind() const {
       return static_cast<VarInfoKind>(KindBits::decode(index_kind));
@@ -2986,8 +2986,8 @@
   friend class ReversePc;
 };
 
-class UntaggedLinkedHashMap : public UntaggedInstance {
-  RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap);
+class UntaggedLinkedHashBase : public UntaggedInstance {
+  RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashBase);
 
   COMPRESSED_POINTER_FIELD(TypeArgumentsPtr, type_arguments)
   VISIT_FROM(type_arguments)
@@ -2998,6 +2998,10 @@
   COMPRESSED_POINTER_FIELD(SmiPtr, deleted_keys)
   VISIT_TO(deleted_keys)
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
+};
+
+class UntaggedLinkedHashMap : public UntaggedLinkedHashBase {
+  RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap);
 
   friend class SnapshotReader;
 };
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index a1d4a89..9c0d887a 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -159,12 +159,12 @@
   F(GrowableObjectArray, type_arguments_)                                      \
   F(GrowableObjectArray, length_)                                              \
   F(GrowableObjectArray, data_)                                                \
-  F(LinkedHashMap, type_arguments_)                                            \
-  F(LinkedHashMap, index_)                                                     \
-  F(LinkedHashMap, hash_mask_)                                                 \
-  F(LinkedHashMap, data_)                                                      \
-  F(LinkedHashMap, used_data_)                                                 \
-  F(LinkedHashMap, deleted_keys_)                                              \
+  F(LinkedHashBase, type_arguments_)                                           \
+  F(LinkedHashBase, index_)                                                    \
+  F(LinkedHashBase, hash_mask_)                                                \
+  F(LinkedHashBase, data_)                                                     \
+  F(LinkedHashBase, used_data_)                                                \
+  F(LinkedHashBase, deleted_keys_)                                             \
   F(TypedData, length_)                                                        \
   F(ExternalTypedData, length_)                                                \
   F(ReceivePort, send_port_)                                                   \
diff --git a/runtime/vm/tagged_pointer.h b/runtime/vm/tagged_pointer.h
index dac584b..4f3b1f6 100644
--- a/runtime/vm/tagged_pointer.h
+++ b/runtime/vm/tagged_pointer.h
@@ -394,7 +394,8 @@
 DEFINE_TAGGED_POINTER(Array, Instance)
 DEFINE_TAGGED_POINTER(ImmutableArray, Array)
 DEFINE_TAGGED_POINTER(GrowableObjectArray, Instance)
-DEFINE_TAGGED_POINTER(LinkedHashMap, Instance)
+DEFINE_TAGGED_POINTER(LinkedHashBase, Instance)
+DEFINE_TAGGED_POINTER(LinkedHashMap, LinkedHashBase)
 DEFINE_TAGGED_POINTER(Float32x4, Instance)
 DEFINE_TAGGED_POINTER(Int32x4, Instance)
 DEFINE_TAGGED_POINTER(Float64x2, Instance)
diff --git a/sdk/lib/_internal/vm/lib/compact_hash.dart b/sdk/lib/_internal/vm/lib/compact_hash.dart
index 7ff2354..492e9bd 100644
--- a/sdk/lib/_internal/vm/lib/compact_hash.dart
+++ b/sdk/lib/_internal/vm/lib/compact_hash.dart
@@ -49,42 +49,42 @@
   @pragma("vm:recognized", "other")
   @pragma("vm:exact-result-type", "dart:typed_data#_Uint32List")
   @pragma("vm:prefer-inline")
-  Uint32List get _index native "LinkedHashMap_getIndex";
+  Uint32List get _index native "LinkedHashBase_getIndex";
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  void set _index(Uint32List value) native "LinkedHashMap_setIndex";
+  void set _index(Uint32List value) native "LinkedHashBase_setIndex";
 
   @pragma("vm:recognized", "other")
   @pragma("vm:exact-result-type", "dart:core#_Smi")
   @pragma("vm:prefer-inline")
-  int get _hashMask native "LinkedHashMap_getHashMask";
+  int get _hashMask native "LinkedHashBase_getHashMask";
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  void set _hashMask(int value) native "LinkedHashMap_setHashMask";
+  void set _hashMask(int value) native "LinkedHashBase_setHashMask";
 
   @pragma("vm:recognized", "other")
   @pragma("vm:exact-result-type", "dart:core#_List")
   @pragma("vm:prefer-inline")
-  List get _data native "LinkedHashMap_getData";
+  List get _data native "LinkedHashBase_getData";
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  void set _data(List value) native "LinkedHashMap_setData";
+  void set _data(List value) native "LinkedHashBase_setData";
 
   @pragma("vm:recognized", "other")
   @pragma("vm:exact-result-type", "dart:core#_Smi")
   @pragma("vm:prefer-inline")
-  int get _usedData native "LinkedHashMap_getUsedData";
+  int get _usedData native "LinkedHashBase_getUsedData";
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  void set _usedData(int value) native "LinkedHashMap_setUsedData";
+  void set _usedData(int value) native "LinkedHashBase_setUsedData";
 
   @pragma("vm:recognized", "other")
   @pragma("vm:exact-result-type", "dart:core#_Smi")
   @pragma("vm:prefer-inline")
-  int get _deletedKeys native "LinkedHashMap_getDeletedKeys";
+  int get _deletedKeys native "LinkedHashBase_getDeletedKeys";
   @pragma("vm:recognized", "other")
   @pragma("vm:prefer-inline")
-  void set _deletedKeys(int value) native "LinkedHashMap_setDeletedKeys";
+  void set _deletedKeys(int value) native "LinkedHashBase_setDeletedKeys";
 }
 
 // This mixin can be applied to _HashFieldBase or _HashVMBase (for
diff --git a/tools/VERSION b/tools/VERSION
index d80c7ef..cd931f8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 291
+PRERELEASE 292
 PRERELEASE_PATCH 0
\ No newline at end of file