diff --git a/pkg/analysis_server/lib/src/cider/fixes.dart b/pkg/analysis_server/lib/src/cider/fixes.dart
index 60f649e..d0ca2c8 100644
--- a/pkg/analysis_server/lib/src/cider/fixes.dart
+++ b/pkg/analysis_server/lib/src/cider/fixes.dart
@@ -31,17 +31,16 @@
   CiderFixesComputer(this._logger, this._fileResolver);
 
   /// Compute quick fixes for errors on the line with the [offset].
-  Future<List<CiderErrorFixes>> compute(String path, int offset) async {
+  Future<List<CiderErrorFixes>> compute(String path, int lineNumber) async {
     var result = <CiderErrorFixes>[];
     var resolvedUnit = _fileResolver.resolve(path: path);
 
     var lineInfo = resolvedUnit.lineInfo;
-    var requestLine = lineInfo.getLocation(offset).lineNumber;
 
     await _logger.runAsync('Compute fixes', () async {
       for (var error in resolvedUnit.errors) {
         var errorLine = lineInfo.getLocation(error.offset).lineNumber;
-        if (errorLine == requestLine) {
+        if (errorLine == lineNumber) {
           var workspace = DartChangeWorkspace([resolvedUnit.session]);
           var context = DartFixContextImpl(
             InstrumentationService.NULL_SERVICE,
diff --git a/pkg/analysis_server/test/src/cider/fixes_test.dart b/pkg/analysis_server/test/src/cider/fixes_test.dart
index b9157d5..4f4b240 100644
--- a/pkg/analysis_server/test/src/cider/fixes_test.dart
+++ b/pkg/analysis_server/test/src/cider/fixes_test.dart
@@ -76,7 +76,7 @@
       fileResolver,
     ).compute(
       convertPath(testPath),
-      _correctionContext.offset,
+      _correctionContext.line,
     );
   }
 
@@ -105,8 +105,8 @@
     _correctionContext = _CorrectionContext(
       content,
       offset,
-      location.lineNumber - 1,
-      location.columnNumber - 1,
+      location.lineNumber,
+      location.columnNumber,
     );
   }
 }
diff --git a/pkg/smith/lib/configuration.dart b/pkg/smith/lib/configuration.dart
index 9544b3a..0c4138a 100644
--- a/pkg/smith/lib/configuration.dart
+++ b/pkg/smith/lib/configuration.dart
@@ -574,26 +574,32 @@
 class Architecture extends NamedEnum {
   static const ia32 = Architecture._('ia32');
   static const x64 = Architecture._('x64');
+  static const x64c = Architecture._('x64c');
   static const arm = Architecture._('arm');
   static const arm_x64 = Architecture._('arm_x64');
   static const armv6 = Architecture._('armv6');
   static const arm64 = Architecture._('arm64');
+  static const arm64c = Architecture._('arm64c');
   static const simarm = Architecture._('simarm');
   static const simarmv6 = Architecture._('simarmv6');
   static const simarm64 = Architecture._('simarm64');
+  static const simarm64c = Architecture._('simarm64c');
 
   static final List<String> names = _all.keys.toList();
 
   static final _all = Map<String, Architecture>.fromIterable([
     ia32,
     x64,
+    x64c,
     arm,
     armv6,
     arm_x64,
     arm64,
+    arm64c,
     simarm,
     simarmv6,
     simarm64,
+    simarm64c,
   ], key: (architecture) => (architecture as Architecture).name);
 
   static Architecture find(String name) {
diff --git a/pkg/vm/lib/transformations/ffi.dart b/pkg/vm/lib/transformations/ffi.dart
index 1c16b1b..5ead392 100644
--- a/pkg/vm/lib/transformations/ffi.dart
+++ b/pkg/vm/lib/transformations/ffi.dart
@@ -237,7 +237,6 @@
   final Map<NativeType, Procedure> loadMethods;
   final Map<NativeType, Procedure> storeMethods;
   final Map<NativeType, Procedure> elementAtMethods;
-  final Procedure loadStructMethod;
   final Procedure memCopy;
   final Procedure allocationTearoff;
   final Procedure asFunctionTearoff;
@@ -322,7 +321,6 @@
           final name = nativeTypeClassNames[t.index];
           return index.getTopLevelMember('dart:ffi', "_elementAt$name");
         }),
-        loadStructMethod = index.getTopLevelMember('dart:ffi', '_loadStruct'),
         memCopy = index.getTopLevelMember('dart:ffi', '_memCopy'),
         allocationTearoff = index.getMember(
             'dart:ffi', 'AllocatorAlloc', LibraryIndex.tearoffPrefix + 'call'),
diff --git a/runtime/lib/ffi.cc b/runtime/lib/ffi.cc
index 3a6bb40..0724681 100644
--- a/runtime/lib/ffi.cc
+++ b/runtime/lib/ffi.cc
@@ -88,45 +88,8 @@
   UNREACHABLE();
 }
 
-static ObjectPtr LoadValueStruct(Zone* zone,
-                                 const Pointer& target,
-                                 const AbstractType& instance_type_arg) {
-  // Result is a struct class -- find <class name>.#fromTypedDataBase
-  // constructor and call it.
-  const Class& cls = Class::Handle(zone, instance_type_arg.type_class());
-  const Function& constructor =
-      Function::Handle(cls.LookupFunctionAllowPrivate(String::Handle(
-          String::Concat(String::Handle(String::Concat(
-                             String::Handle(cls.Name()), Symbols::Dot())),
-                         Symbols::StructFromTypedDataBase()))));
-  ASSERT(!constructor.IsNull());
-  ASSERT(constructor.IsGenerativeConstructor());
-  ASSERT(!Object::Handle(constructor.VerifyCallEntryPoint()).IsError());
-  const Instance& new_object = Instance::Handle(Instance::New(cls));
-  ASSERT(cls.is_allocated() || Dart::vm_snapshot_kind() != Snapshot::kFullAOT);
-  const Array& args = Array::Handle(zone, Array::New(2));
-  args.SetAt(0, new_object);
-  args.SetAt(1, target);
-  const Object& constructorResult =
-      Object::Handle(DartEntry::InvokeFunction(constructor, args));
-  ASSERT(!constructorResult.IsError());
-  return new_object.ptr();
-}
-
 DEFINE_NATIVE_ENTRY(Ffi_loadStruct, 0, 2) {
-  GET_NON_NULL_NATIVE_ARGUMENT(Pointer, pointer, arguments->NativeArgAt(0));
-  const AbstractType& pointer_type_arg =
-      AbstractType::Handle(arguments->NativeTypeArgAt(0));
-  GET_NON_NULL_NATIVE_ARGUMENT(Integer, index, arguments->NativeArgAt(1));
-
-  // TODO(36370): Make representation consistent with kUnboxedFfiIntPtr.
-  const size_t address =
-      pointer.NativeAddress() + static_cast<intptr_t>(index.AsInt64Value()) *
-                                    SizeOf(zone, pointer_type_arg);
-  const Pointer& pointer_offset =
-      Pointer::Handle(zone, Pointer::New(pointer_type_arg, address));
-
-  return LoadValueStruct(zone, pointer_offset, pointer_type_arg);
+  UNREACHABLE();
 }
 
 #define DEFINE_NATIVE_ENTRY_STORE(type)                                        \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index cc14ad3..ec47b19 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -1452,11 +1452,8 @@
     HeapIterationScope his(T);
 
     IG->shared_class_table()->Remap(old_to_new_cid);
-    IG->ForEachIsolate(
-        [&](Isolate* I) {
-          I->set_remapping_cids(true);
-        },
-        /*is_at_safepoint=*/true);
+    IG->set_remapping_cids(true);
+
     // Update the class table. Do it before rewriting cids in headers, as
     // the heap walkers load an object's size *after* calling the visitor.
     IG->class_table()->Remap(old_to_new_cid);
@@ -1468,11 +1465,7 @@
       IG->heap()->VisitObjects(&visitor);
     }
 
-    IG->ForEachIsolate(
-        [&](Isolate* I) {
-          I->set_remapping_cids(false);
-        },
-        /*is_at_safepoint=*/true);
+    IG->set_remapping_cids(false);
 #if defined(DEBUG)
     IG->class_table()->Validate();
 #endif
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index 392fd84..855cdca 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -2504,7 +2504,7 @@
   if (!error_.IsNull()) {
     Jump(error_);
   }
-  I->set_all_classes_finalized(true);
+  IG->set_all_classes_finalized(true);
 }
 
 void PrecompileParsedFunctionHelper::FinalizeCompilation(
diff --git a/runtime/vm/compiler/backend/block_scheduler.cc b/runtime/vm/compiler/backend/block_scheduler.cc
index ccc10b1..bcf2908 100644
--- a/runtime/vm/compiler/backend/block_scheduler.cc
+++ b/runtime/vm/compiler/backend/block_scheduler.cc
@@ -63,7 +63,7 @@
         DeoptId::kNone, "BlockScheduler: ICData array cleared");
   }
   if (ic_data_array.IsNull()) {
-    DEBUG_ASSERT(Isolate::Current()->HasAttemptedReload() ||
+    DEBUG_ASSERT(IsolateGroup::Current()->HasAttemptedReload() ||
                  function.ForceOptimize());
     return;
   }
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 5b8b058..26198ca 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -482,7 +482,7 @@
 FlowGraph::ToCheck FlowGraph::CheckForInstanceCall(
     InstanceCallInstr* call,
     UntaggedFunction::Kind kind) const {
-  if (!FLAG_use_cha_deopt && !isolate()->all_classes_finalized()) {
+  if (!FLAG_use_cha_deopt && !isolate_group()->all_classes_finalized()) {
     // Even if class or function are private, lazy class finalization
     // may later add overriding methods.
     return ToCheck::kCheckCid;
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 5f224b06..075f0cf 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -731,7 +731,7 @@
           // Type of a private class cannot change through later loaded libs.
           cid_ = type_class.id();
         } else if (FLAG_use_cha_deopt ||
-                   thread->isolate()->all_classes_finalized()) {
+                   thread->isolate_group()->all_classes_finalized()) {
           if (FLAG_trace_cha) {
             THR_Print("  **(CHA) Compile type not subclassed: %s\n",
                       type_class.ToCString());
@@ -1096,7 +1096,7 @@
           cid = type_class.id();
         } else {
           if (FLAG_use_cha_deopt ||
-              thread->isolate()->all_classes_finalized()) {
+              thread->isolate_group()->all_classes_finalized()) {
             if (FLAG_trace_cha) {
               THR_Print(
                   "  **(CHA) Computing exact type of receiver, "
@@ -1463,7 +1463,7 @@
   }
   if (field.needs_load_guard()) {
     // Should be kept in sync with Slot::Get.
-    DEBUG_ASSERT(Isolate::Current()->HasAttemptedReload());
+    DEBUG_ASSERT(IsolateGroup::Current()->HasAttemptedReload());
     return CompileType::Dynamic();
   }
   return CompileType(is_nullable, cid, abstract_type);
diff --git a/runtime/vm/compiler/call_specializer.cc b/runtime/vm/compiler/call_specializer.cc
index b6f5265..f81fd02 100644
--- a/runtime/vm/compiler/call_specializer.cc
+++ b/runtime/vm/compiler/call_specializer.cc
@@ -1161,7 +1161,7 @@
   if (!type_class.IsPrivate()) {
     // In AOT mode we can't use CHA deoptimizations.
     ASSERT(!CompilerState::Current().is_aot() || !FLAG_use_cha_deopt);
-    if (FLAG_use_cha_deopt || isolate()->all_classes_finalized()) {
+    if (FLAG_use_cha_deopt || isolate_group()->all_classes_finalized()) {
       if (FLAG_trace_cha) {
         THR_Print(
             "  **(CHA) Typecheck as class equality since no "
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 054b900..abaedc1 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -3422,7 +3422,7 @@
     body += NullConstant();
   } else if (is_getter && is_method) {
     ASSERT(!field.needs_load_guard()
-                NOT_IN_PRODUCT(|| I->HasAttemptedReload()));
+                NOT_IN_PRODUCT(|| IG->HasAttemptedReload()));
     body += LoadLocal(parsed_function_->ParameterVariable(0));
     body += LoadField(
         field, /*calls_initializer=*/field.NeedsInitializationCheckOnLoad());
@@ -3455,7 +3455,7 @@
 #if defined(PRODUCT)
       UNREACHABLE();
 #else
-      ASSERT(Isolate::Current()->HasAttemptedReload());
+      ASSERT(IsolateGroup::Current()->HasAttemptedReload());
       body += CheckAssignable(AbstractType::Handle(Z, field.type()),
                               Symbols::FunctionResult());
 #endif
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index 7474941..06aeae2 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -526,7 +526,7 @@
 static void CheckStaticLookup(const Object& target) {
   if (target.IsNull()) {
 #ifndef PRODUCT
-    ASSERT(Isolate::Current()->HasAttemptedReload());
+    ASSERT(IsolateGroup::Current()->HasAttemptedReload());
     Report::LongJump(LanguageError::Handle(LanguageError::New(String::Handle(
         String::New("Unimplemented handling of missing static target")))));
 #else
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 1485555..8ee2201 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -961,9 +961,7 @@
     // TODO(27003)
     return;
   }
-  if (HasAttemptedReload()) {
-    return;
-  }
+
   // Verify that all canonical instances are correctly setup in the
   // corresponding canonical tables.
   BackgroundCompiler::Stop(this);
@@ -1993,8 +1991,8 @@
       new IsolateGroupReloadContext(this, shared_class_table, js));
   group_reload_context_ = group_reload_context;
 
+  SetHasAttemptedReload(true);
   ForEachIsolate([&](Isolate* isolate) {
-    isolate->SetHasAttemptedReload(true);
     isolate->program_reload_context_ =
         new ProgramReloadContext(group_reload_context_, isolate);
   });
@@ -2026,8 +2024,8 @@
       new IsolateGroupReloadContext(this, shared_class_table, js));
   group_reload_context_ = group_reload_context;
 
+  SetHasAttemptedReload(true);
   ForEachIsolate([&](Isolate* isolate) {
-    isolate->SetHasAttemptedReload(true);
     isolate->program_reload_context_ =
         new ProgramReloadContext(group_reload_context_, isolate);
   });
@@ -2448,7 +2446,7 @@
 
 #if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
   if (FLAG_check_reloaded && is_runnable() && !Isolate::IsSystemIsolate(this)) {
-    if (!HasAttemptedReload()) {
+    if (!group()->HasAttemptedReload()) {
       FATAL(
           "Isolate did not reload before exiting and "
           "--check-reloaded is enabled.\n");
@@ -2817,7 +2815,7 @@
   raw_class = group()->class_table()->At(cid);
 #endif  // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
   ASSERT(raw_class != nullptr);
-  ASSERT(remapping_cids() || raw_class->untag()->id_ == cid);
+  ASSERT(group()->remapping_cids() || raw_class->untag()->id_ == cid);
   return raw_class;
 }
 
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 794225c..2eb9f41 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -474,6 +474,20 @@
     return null_safety() || FLAG_strict_null_safety_checks;
   }
 
+#if !defined(PRODUCT)
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  bool HasAttemptedReload() const {
+    return HasAttemptedReloadBit::decode(isolate_group_flags_);
+  }
+  void SetHasAttemptedReload(bool value) {
+    isolate_group_flags_ =
+        HasAttemptedReloadBit::update(value, isolate_group_flags_);
+  }
+#else
+  bool HasAttemptedReload() const { return false; }
+#endif  // !defined(DART_PRECOMPILED_RUNTIME)
+#endif  // !defined(PRODUCT)
+
 #if defined(PRODUCT)
   void set_use_osr(bool use_osr) { ASSERT(!use_osr); }
 #else   // defined(PRODUCT)
@@ -690,6 +704,23 @@
         CompactionInProgressBit::update(value, isolate_group_flags_);
   }
 
+  // In precompilation we finalize all regular classes before compiling.
+  bool all_classes_finalized() const {
+    return AllClassesFinalizedBit::decode(isolate_group_flags_);
+  }
+  void set_all_classes_finalized(bool value) {
+    isolate_group_flags_ =
+        AllClassesFinalizedBit::update(value, isolate_group_flags_);
+  }
+
+  bool remapping_cids() const {
+    return RemappingCidsBit::decode(isolate_group_flags_);
+  }
+  void set_remapping_cids(bool value) {
+    isolate_group_flags_ =
+        RemappingCidsBit::update(value, isolate_group_flags_);
+  }
+
   uword FindPendingDeoptAtSafepoint(uword fp);
 
   // Used by background compiler which field became boxed and must trigger
@@ -739,9 +770,12 @@
   friend class NoReloadScope;  // no_reload_scope_depth_
 
 #define ISOLATE_GROUP_FLAG_BITS(V)                                             \
+  V(AllClassesFinalized)                                                       \
   V(CompactionInProgress)                                                      \
   V(EnableAsserts)                                                             \
+  V(HasAttemptedReload)                                                        \
   V(NullSafety)                                                                \
+  V(RemappingCids)                                                             \
   V(NullSafetySet)                                                             \
   V(Obfuscate)                                                                 \
   V(UseFieldGuards)                                                            \
@@ -1239,13 +1273,6 @@
 
   void DeleteReloadContext();
 
-  bool HasAttemptedReload() const {
-    return HasAttemptedReloadBit::decode(isolate_flags_);
-  }
-  void SetHasAttemptedReload(bool value) {
-    isolate_flags_ = HasAttemptedReloadBit::update(value, isolate_flags_);
-  }
-
   bool CanReload() const;
 #else
   bool IsReloading() const { return false; }
@@ -1303,21 +1330,6 @@
   ErrorPtr sticky_error() const { return sticky_error_; }
   DART_WARN_UNUSED_RESULT ErrorPtr StealStickyError();
 
-  // In precompilation we finalize all regular classes before compiling.
-  bool all_classes_finalized() const {
-    return AllClassesFinalizedBit::decode(isolate_flags_);
-  }
-  void set_all_classes_finalized(bool value) {
-    isolate_flags_ = AllClassesFinalizedBit::update(value, isolate_flags_);
-  }
-
-  bool remapping_cids() const {
-    return RemappingCidsBit::decode(isolate_flags_);
-  }
-  void set_remapping_cids(bool value) {
-    isolate_flags_ = RemappingCidsBit::update(value, isolate_flags_);
-  }
-
 #ifndef PRODUCT
   ErrorPtr InvokePendingServiceExtensionCalls();
   void AppendServiceExtensionCall(const Instance& closure,
@@ -1564,10 +1576,7 @@
   V(IsRunnable)                                                                \
   V(IsServiceIsolate)                                                          \
   V(IsKernelIsolate)                                                           \
-  V(AllClassesFinalized)                                                       \
-  V(RemappingCids)                                                             \
   V(ResumeRequest)                                                             \
-  V(HasAttemptedReload)                                                        \
   V(HasAttemptedStepping)                                                      \
   V(ShouldPausePostServiceRequest)                                             \
   V(CopyParentCode)                                                            \
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 88567bf..7ad3137 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -3806,7 +3806,7 @@
 void Class::Finalize() const {
   auto thread = Thread::Current();
   auto isolate_group = thread->isolate_group();
-  ASSERT(!thread->isolate()->all_classes_finalized());
+  ASSERT(!thread->isolate_group()->all_classes_finalized());
   ASSERT(!is_finalized());
   // Prefinalized classes have a VM internal representation and no Dart fields.
   // Their instance size  is precomputed and field offsets are known.
@@ -5812,7 +5812,7 @@
     // Shape changes lose the canonical bit because they may result/ in merging
     // constants. E.g., [x1, y1], [x1, y2] -> [x1].
     DEBUG_ASSERT(constant.IsCanonical() ||
-                 Isolate::Current()->HasAttemptedReload());
+                 IsolateGroup::Current()->HasAttemptedReload());
     InsertCanonicalConstant(zone, constant);
   }
   set.Release();
@@ -8976,7 +8976,7 @@
       Function::Handle(zone, Resolver::ResolveFunction(zone, owner, func_name));
 
   if (!target.IsNull() && (target.ptr() != parent.ptr())) {
-    DEBUG_ASSERT(Isolate::Current()->HasAttemptedReload());
+    DEBUG_ASSERT(IsolateGroup::Current()->HasAttemptedReload());
     if ((target.is_static() != parent.is_static()) ||
         (target.kind() != parent.kind())) {
       target = Function::null();
@@ -10299,8 +10299,8 @@
       FLAG_precompiled_mode || isolate_group->use_field_guards();
 #else
   const bool use_guarded_cid =
-      FLAG_precompiled_mode ||
-      (isolate_group->use_field_guards() && !isolate->HasAttemptedReload());
+      FLAG_precompiled_mode || (isolate_group->use_field_guards() &&
+                                !isolate_group->HasAttemptedReload());
 #endif  // !defined(PRODUCT)
   result.set_guarded_cid_unsafe(use_guarded_cid ? kIllegalCid : kDynamicCid);
   result.set_is_nullable_unsafe(use_guarded_cid ? false : true);
@@ -10594,7 +10594,7 @@
     UNREACHABLE();
 #else
     SafepointMutexLocker ml(
-        thread->isolate()->group()->initializer_functions_mutex());
+        thread->isolate_group()->initializer_functions_mutex());
     // Double check after grabbing the lock.
     initializer = InitializerFunction();
     if (initializer.IsNull()) {
@@ -18390,7 +18390,7 @@
     const intptr_t instance_size = SizeFromClass();
     ASSERT(instance_size != 0);
     const auto unboxed_fields_bitmap =
-        thread->isolate()->group()->shared_class_table()->GetUnboxedFieldsMapAt(
+        thread->isolate_group()->shared_class_table()->GetUnboxedFieldsMapAt(
             class_id);
     for (intptr_t offset = Instance::NextFieldOffset(); offset < instance_size;
          offset += kWordSize) {
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 6dbacbf..e67fa97 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -451,26 +451,26 @@
   }
 
   HierarchyInfo* hierarchy_info() const {
-    ASSERT(isolate_ != NULL);
+    ASSERT(isolate_group_ != nullptr);
     return hierarchy_info_;
   }
 
   void set_hierarchy_info(HierarchyInfo* value) {
-    ASSERT(isolate_ != NULL);
-    ASSERT((hierarchy_info_ == NULL && value != NULL) ||
-           (hierarchy_info_ != NULL && value == NULL));
+    ASSERT(isolate_group_ != nullptr);
+    ASSERT((hierarchy_info_ == nullptr && value != nullptr) ||
+           (hierarchy_info_ != nullptr && value == nullptr));
     hierarchy_info_ = value;
   }
 
   TypeUsageInfo* type_usage_info() const {
-    ASSERT(isolate_ != NULL);
+    ASSERT(isolate_group_ != nullptr);
     return type_usage_info_;
   }
 
   void set_type_usage_info(TypeUsageInfo* value) {
-    ASSERT(isolate_ != NULL);
-    ASSERT((type_usage_info_ == NULL && value != NULL) ||
-           (type_usage_info_ != NULL && value == NULL));
+    ASSERT(isolate_group_ != nullptr);
+    ASSERT((type_usage_info_ == nullptr && value != nullptr) ||
+           (type_usage_info_ != nullptr && value == nullptr));
     type_usage_info_ = value;
   }
 
diff --git a/sdk/lib/_internal/vm/lib/ffi_patch.dart b/sdk/lib/_internal/vm/lib/ffi_patch.dart
index dd18559..3a43c2b 100644
--- a/sdk/lib/_internal/vm/lib/ffi_patch.dart
+++ b/sdk/lib/_internal/vm/lib/ffi_patch.dart
@@ -204,16 +204,6 @@
 Pointer<S> _loadPointer<S extends NativeType>(
     Pointer pointer, int offsetInBytes) native "Ffi_loadPointer";
 
-S _loadStructNoStruct<S extends Struct>(Pointer<S> pointer, int index) {
-  if (S == Struct) {
-    throw ArgumentError("S should be a subtype of Struct.");
-  }
-  return _loadStruct(pointer, index);
-}
-
-S _loadStruct<S extends Struct>(Pointer<S> pointer, int index)
-    native "Ffi_loadStruct";
-
 @pragma("vm:recognized", "other")
 void _storeInt8(Pointer pointer, int offsetInBytes, int value)
     native "Ffi_storeInt8";
@@ -518,10 +508,12 @@
 
 extension StructPointer<T extends Struct> on Pointer<T> {
   @patch
-  T get ref => _loadStructNoStruct(this, 0);
+  T get ref =>
+      throw "UNREACHABLE: This case should have been rewritten in the CFE.";
 
   @patch
-  T operator [](int index) => _loadStructNoStruct(this, index);
+  T operator [](int index) =>
+      throw "UNREACHABLE: This case should have been rewritten in the CFE.";
 }
 
 extension NativePort on SendPort {
diff --git a/sdk/lib/async/schedule_microtask.dart b/sdk/lib/async/schedule_microtask.dart
index bb6d600..314d474 100644
--- a/sdk/lib/async/schedule_microtask.dart
+++ b/sdk/lib/async/schedule_microtask.dart
@@ -125,6 +125,7 @@
 /// * [The Event Loop and Dart](https://dart.dev/articles/event-loop/):
 /// Learn how Dart handles the event queue and microtask queue, so you can write
 /// better asynchronous code with fewer surprises.
+@pragma('vm:entry-point', 'call')
 void scheduleMicrotask(void Function() callback) {
   _Zone currentZone = Zone._current;
   if (identical(_rootZone, currentZone)) {
diff --git a/tools/VERSION b/tools/VERSION
index 79ef3203..28914ae 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 1
+PRERELEASE 2
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 764388f..4d2a870 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -272,16 +272,20 @@
       "benchmarks/",
       "out/DebugIA32/",
       "out/DebugX64/",
+      "out/DebugX64C/",
       "out/DebugSIMARM/",
       "out/DebugSIMARM64/",
+      "out/DebugSIMARM64C/",
       "out/DebugSIMARM_X64/",
       "out/DebugAndroidARM/",
       "out/DebugAndroidARM_X64/",
       "out/DebugAndroidARM64/",
       "out/ReleaseIA32/",
       "out/ReleaseX64/",
+      "out/ReleaseX64C/",
       "out/ReleaseSIMARM/",
       "out/ReleaseSIMARM64/",
+      "out/ReleaseSIMARM64C/",
       "out/ReleaseSIMARM_X64/",
       "out/ReleaseAndroidARM/",
       "out/ReleaseAndroidARM_X64/",
@@ -294,20 +298,27 @@
       "out/ReleaseXARM64/",
       "out/ProductIA32/",
       "out/ProductX64/",
+      "out/ProductX64C/",
       "out/ProductSIMARM/",
       "out/ProductSIMARM64/",
+      "out/ProductSIMARM64C/",
       "out/ProductSIMARM_X64/",
       "out/ProductAndroidARM/",
       "out/ProductAndroidARM64/",
       "xcodebuild/DebugIA32/",
       "xcodebuild/DebugSIMARM/",
       "xcodebuild/DebugSIMARM64/",
+      "xcodebuild/DebugSIMARM64C/",
       "xcodebuild/DebugX64/",
+      "xcodebuild/DebugX64C/",
       "xcodebuild/ProductX64/",
+      "xcodebuild/ProductX64C/",
       "xcodebuild/ReleaseIA32/",
       "xcodebuild/ReleaseSIMARM/",
       "xcodebuild/ReleaseSIMARM64/",
+      "xcodebuild/ReleaseSIMARM64C/",
       "xcodebuild/ReleaseX64/",
+      "xcodebuild/ReleaseX64C/",
       "samples/",
       "samples_2/",
       "samples-dev/",
@@ -730,13 +741,13 @@
         "use-elf": true
       }
     },
-    "dartkp-android-(debug|product|release)-(arm|arm64)": {
+    "dartkp-android-(debug|product|release)-(arm|arm64|arm64c)": {
       "options": {
         "use-elf": true
       }
     },
-    "dartk-android-(debug|product|release)-(arm|arm64)": {},
-    "dartkp-(linux|win|mac)-(debug|product|release)-(arm64|simarm|simarm64)": {
+    "dartk-android-(debug|product|release)-(arm|arm64|arm64c)": {},
+    "dartkp-(linux|win|mac)-(debug|product|release)-(arm64|arm64c|simarm|simarm64|simarm64c)": {
       "options": {
         "use-elf": true
       }
@@ -762,19 +773,19 @@
         "use-elf": true
       }
     },
-    "dartkp-win-(product|release)-x64": {
+    "dartkp-win-(product|release)-(x64|x64c)": {
       "options": {
         "use-elf": true
       }
     },
-    "dartkp-win-debug-x64": {
+    "dartkp-win-debug-(x64|x64c)": {
       "options": {
         "use-elf": true,
         "vm-options": []
       }
     },
-    "dartkp-(linux|mac)-(product|release)-x64": {},
-    "dartkp-obfuscate-(linux|mac|win)-(debug|product|release)-x64": {
+    "dartkp-(linux|mac)-(product|release)-(x64|x64c)": {},
+    "dartkp-obfuscate-(linux|mac|win)-(debug|product|release)-(x64|x64c)": {
       "options": {
         "builder-tag": "obfuscated",
         "vm-options": [
@@ -782,19 +793,19 @@
         ]
       }
     },
-    "dartkp-(linux|mac)-debug-x64": {
+    "dartkp-(linux|mac)-debug-(x64|x64c)": {
       "options": {
         "vm-options": []
       }
     },
-    "dartkp-no-bare-(linux|mac|win)-(debug|product|release)-x64": {
+    "dartkp-no-bare-(linux|mac|win)-(debug|product|release)-(x64|x64c)": {
       "options": {
         "vm-options": [
           "--no-use-bare-instructions"
         ]
       }
     },
-    "dartkp-no-bare-(linux|mac|win)-(debug|product|release)-(simarm|simarm64)": {
+    "dartkp-no-bare-(linux|mac|win)-(debug|product|release)-(simarm|simarm64|simarm64c)": {
       "options": {
         "vm-options": [
           "--no-use-bare-instructions"
@@ -802,68 +813,68 @@
         "use-elf": true
       }
     },
-    "dartk-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {},
-    "dartk-fuchsia-(debug|product|release)-x64": {},
+    "dartk-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c)": {},
+    "dartk-fuchsia-(debug|product|release)-(x64|x64c)": {},
     "dartk-linux-debug-(ia32|x64)-canary": {
       "options": {
         "builder-tag": "canary"
       }
     },
-    "dartkp-weak-asserts-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-weak-asserts-(linux|mac)-(debug|product|release)-(x64|x64c)": {
       "options": {
         "enable-asserts": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartkp-weak-asserts-(linux|mac)-(debug|product|release)-(simarm|simarm64)": {
+    "dartkp-weak-asserts-(linux|mac)-(debug|product|release)-(simarm|simarm64|simarm64c)": {
       "options": {
         "enable-asserts": true,
         "use-elf": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartkp-weak-asserts-win-(debug|product|release)-(simarm64|x64)": {
+    "dartkp-weak-asserts-win-(debug|product|release)-(simarm64|simarm64c|x64|x64c)": {
       "options": {
         "enable-asserts": true,
         "use-elf": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartk-weak-asserts-(linux|mac|win)-(debug|product|release)-(ia32|simarm|simarm64|x64)": {
+    "dartk-weak-asserts-(linux|mac|win)-(debug|product|release)-(ia32|simarm|simarm64|simarm64c|x64|x64c)": {
       "options": {
         "enable-asserts": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartk-strong-(linux|mac|win)-(debug|product|release)-(ia32|simarm|simarm64|x64)": {
+    "dartk-strong-(linux|mac|win)-(debug|product|release)-(ia32|simarm|simarm64|simarm64c|x64|x64c)": {
       "options": {
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartkp-strong-(linux|mac)-(debug|product|release)-x64": {
+    "dartkp-strong-(linux|mac)-(debug|product|release)-(x64|x64c)": {
       "options": {
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartkp-strong-(linux|mac)-(debug|product|release)-(simarm|simarm64)": {
+    "dartkp-strong-(linux|mac)-(debug|product|release)-(simarm|simarm64|simarm64c)": {
       "options": {
         "use-elf": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartkp-strong-win-(debug|product|release)-(simarm64|x64)": {
+    "dartkp-strong-win-(debug|product|release)-(simarm64|simarm64c|x64|x64c)": {
       "options": {
         "use-elf": true,
         "builder-tag": "vm_nnbd"
       }
     },
-    "dartk-checked-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {
+    "dartk-checked-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c)": {
       "options": {
         "enable-asserts": true
       }
     },
-    "dartk-(linux|mac|win)-(debug|product|release)-(arm64|simarm|simarm64)": {},
-    "dartk-optcounter-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {
+    "dartk-(linux|mac|win)-(debug|product|release)-(arm64|arm64c|simarm|simarm64|simarm64c)": {},
+    "dartk-optcounter-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c|simarm|simarm64|simarm64c)": {
       "options": {
         "builder-tag": "optimization_counter_threshold",
         "vm-options": [
@@ -872,27 +883,27 @@
         ]
       }
     },
-    "dartk-reload-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {
+    "dartk-reload-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c)": {
       "options": {
         "hot-reload": true
       }
     },
-    "dartk-reload-rollback-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {
+    "dartk-reload-rollback-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c)": {
       "options": {
         "hot-reload-rollback": true
       }
     },
-    "dartk-linux-(debug|product|release)-(arm|arm64)-qemu": {
+    "dartk-linux-(debug|product|release)-(arm|arm64|arm64c)-qemu": {
       "options": {
         "use-qemu": true
       }
     },
-    "dartkp-linux-(debug|product|release)-(arm|arm64)-qemu": {
+    "dartkp-linux-(debug|product|release)-(arm|arm64|arm64c)-qemu": {
       "options": {
         "use-qemu": true
       }
     },
-    "app_jitk-(linux|mac|win)-(debug|product|release)-(ia32|x64)": {},
+    "app_jitk-(linux|mac|win)-(debug|product|release)-(ia32|x64|x64c)": {},
     "dartdevk-checked-(linux|mac|win)-(debug|product|release)-(chrome|firefox)": {
       "options": {
         "checked": true,
@@ -1133,7 +1144,8 @@
       "builders": [
         "vm-kernel-precomp-android-release-arm",
         "vm-kernel-precomp-android-release-arm_x64",
-        "vm-kernel-precomp-android-release-arm64"
+        "vm-kernel-precomp-android-release-arm64",
+        "vm-kernel-precomp-android-release-arm64c"
       ],
       "meta": {
         "description": "This configuration is used by the vm precomp builders on Android."
@@ -1162,10 +1174,13 @@
     {
       "builders": [
         "vm-ffi-android-debug-arm64",
+        "vm-ffi-android-debug-arm64c",
         "vm-ffi-android-debug-arm",
         "vm-ffi-android-release-arm64",
+        "vm-ffi-android-release-arm64c",
         "vm-ffi-android-release-arm",
         "vm-ffi-android-product-arm64",
+        "vm-ffi-android-product-arm64c",
         "vm-ffi-android-product-arm"
       ],
       "meta": {
@@ -1245,9 +1260,13 @@
       "builders": [
         "vm-kernel-precomp-nnbd-linux-debug-x64",
         "vm-kernel-precomp-nnbd-linux-release-simarm64",
+        "vm-kernel-precomp-nnbd-linux-release-simarm64c",
         "vm-kernel-precomp-nnbd-linux-release-x64",
+        "vm-kernel-precomp-nnbd-linux-release-x64c",
         "vm-kernel-precomp-nnbd-mac-release-simarm64",
-        "vm-kernel-precomp-nnbd-win-release-x64"
+        "vm-kernel-precomp-nnbd-mac-release-simarm64c",
+        "vm-kernel-precomp-nnbd-win-release-x64",
+        "vm-kernel-precomp-nnbd-win-release-x64c"
       ],
       "meta": {
         "description": "This configuration is for the VM AOT nnbd builder group."
@@ -1354,10 +1373,14 @@
     {
       "builders": [
         "vm-kernel-precomp-linux-product-x64",
+        "vm-kernel-precomp-linux-product-x64c",
         "vm-kernel-precomp-linux-release-simarm",
         "vm-kernel-precomp-linux-release-simarm64",
+        "vm-kernel-precomp-linux-release-simarm64c",
         "vm-kernel-precomp-mac-release-simarm64",
-        "vm-kernel-precomp-win-release-x64"
+        "vm-kernel-precomp-mac-release-simarm64c",
+        "vm-kernel-precomp-win-release-x64",
+        "vm-kernel-precomp-win-release-x64c"
       ],
       "meta": {
         "description": "This configuration is used by the vm kernel precomp builders."
@@ -1383,7 +1406,8 @@
     },
     {
       "builders": [
-        "vm-kernel-precomp-linux-debug-x64"
+        "vm-kernel-precomp-linux-debug-x64",
+        "vm-kernel-precomp-linux-debug-x64c"
       ],
       "meta": {
         "description": "This configuration is used by the vm kernel precomp debug builders. It uses 15 shards for testing to avoid 1 hour shard timeouts."
@@ -1410,8 +1434,10 @@
     {
       "builders": [
         "vm-kernel-precomp-bare-linux-release-x64",
+        "vm-kernel-precomp-bare-linux-release-x64c",
         "vm-kernel-precomp-bare-linux-release-simarm",
-        "vm-kernel-precomp-bare-linux-release-simarm64"
+        "vm-kernel-precomp-bare-linux-release-simarm64",
+        "vm-kernel-precomp-bare-linux-release-simarm64c"
       ],
       "meta": {
         "description": "This configuration is used by the vm kernel precomp builders using bare instructions."
@@ -1437,7 +1463,8 @@
     },
     {
       "builders": [
-        "vm-kernel-precomp-obfuscate-linux-release-x64"
+        "vm-kernel-precomp-obfuscate-linux-release-x64",
+        "vm-kernel-precomp-obfuscate-linux-release-x64c"
       ],
       "meta": {
         "description": "This configuration is used by the obfuscated vm kernel precomp builders."
@@ -1599,10 +1626,13 @@
       "builders": [
         "vm-kernel-linux-release-simarm",
         "vm-kernel-linux-release-simarm64",
+        "vm-kernel-linux-release-simarm64c",
         "vm-kernel-linux-release-ia32",
         "vm-kernel-win-debug-ia32",
         "vm-kernel-win-debug-x64",
+        "vm-kernel-win-debug-x64c",
         "vm-kernel-win-product-x64",
+        "vm-kernel-win-product-x64c",
         "vm-kernel-win-release-ia32"
       ],
       "meta": {
@@ -1630,15 +1660,22 @@
       "builders": [
         "vm-kernel-nnbd-linux-debug-ia32",
         "vm-kernel-nnbd-linux-debug-x64",
+        "vm-kernel-nnbd-linux-debug-x64c",
         "vm-kernel-nnbd-linux-release-ia32",
         "vm-kernel-nnbd-linux-release-simarm",
         "vm-kernel-nnbd-linux-release-simarm64",
+        "vm-kernel-nnbd-linux-release-simarm64c",
         "vm-kernel-nnbd-linux-release-x64",
+        "vm-kernel-nnbd-linux-release-x64c",
         "vm-kernel-nnbd-mac-debug-x64",
+        "vm-kernel-nnbd-mac-debug-x64c",
         "vm-kernel-nnbd-mac-release-x64",
+        "vm-kernel-nnbd-mac-release-x64c",
         "vm-kernel-nnbd-win-release-ia32",
         "vm-kernel-nnbd-win-debug-x64",
-        "vm-kernel-nnbd-win-release-x64"
+        "vm-kernel-nnbd-win-debug-x64c",
+        "vm-kernel-nnbd-win-release-x64",
+        "vm-kernel-nnbd-win-release-x64c"
       ],
       "meta": {
         "description": "This configuration is for the VM nnbd builder group."
@@ -1710,13 +1747,20 @@
     {
       "builders": [
         "vm-kernel-linux-product-x64",
+        "vm-kernel-linux-product-x64c",
         "vm-kernel-linux-release-x64",
+        "vm-kernel-linux-release-x64c",
         "vm-kernel-linux-debug-ia32",
         "vm-kernel-linux-debug-x64",
+        "vm-kernel-linux-debug-x64c",
         "vm-kernel-mac-product-x64",
+        "vm-kernel-mac-product-x64c",
         "vm-kernel-mac-release-x64",
+        "vm-kernel-mac-release-x64c",
         "vm-kernel-mac-debug-x64",
-        "vm-kernel-win-release-x64"
+        "vm-kernel-mac-debug-x64c",
+        "vm-kernel-win-release-x64",
+        "vm-kernel-win-release-x64c"
       ],
       "meta": {
         "description": "This configuration is for the co19_2 kernel builder group."
@@ -1750,7 +1794,8 @@
     },
     {
       "builders": [
-        "vm-kernel-checked-linux-release-x64"
+        "vm-kernel-checked-linux-release-x64",
+        "vm-kernel-checked-linux-release-x64c"
       ],
       "meta": {
         "description": "This configuration is for the kernel builder group in checked mode."
@@ -1766,7 +1811,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-checked-linux-release-x64"
+            "-ndartk-checked-linux-release-${arch}"
           ],
           "fileset": "vm-kernel",
           "shards": 10
@@ -1797,7 +1842,8 @@
     },
     {
       "builders": [
-        "cross-vm-linux-release-arm64"
+        "cross-vm-linux-release-arm64",
+        "cross-vm-linux-release-arm64c"
       ],
       "meta": {
         "description": "This configuration is for the cross arm builders."
@@ -1822,7 +1868,8 @@
     },
     {
       "builders": [
-        "cross-vm-precomp-linux-release-arm64"
+        "cross-vm-precomp-linux-release-arm64",
+        "cross-vm-precomp-linux-release-arm64c"
       ],
       "meta": {
         "description": "This configuration is for the cross arm AOT builders."
@@ -1850,8 +1897,11 @@
     {
       "builders": [
         "app-kernel-linux-debug-x64",
+        "app-kernel-linux-debug-x64c",
         "app-kernel-linux-product-x64",
-        "app-kernel-linux-release-x64"
+        "app-kernel-linux-product-x64c",
+        "app-kernel-linux-release-x64",
+        "app-kernel-linux-release-x64c"
       ],
       "meta": {
         "description": "This configuration is used by the vm kernel app builder group."
@@ -1867,7 +1917,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-napp_jitk-linux-${mode}-x64"
+            "-napp_jitk-linux-${mode}-${arch}"
           ],
           "shards": 6,
           "fileset": "vm-kernel"
@@ -2147,7 +2197,11 @@
     {
       "builders": [
         "vm-kernel-optcounter-threshold-linux-release-ia32",
-        "vm-kernel-optcounter-threshold-linux-release-x64"
+        "vm-kernel-optcounter-threshold-linux-release-x64",
+        "vm-kernel-optcounter-threshold-linux-release-x64c",
+        "vm-kernel-optcounter-threshold-linux-release-simarm",
+        "vm-kernel-optcounter-threshold-linux-release-simarm64",
+        "vm-kernel-optcounter-threshold-linux-release-simarm64c"
       ],
       "meta": {
         "description": "This is the configuration for the kernel optcounter builders, under the vm-kernel group. They run the same tests as the ordinary VM kernel builders, but add extra options to the vm."
@@ -2173,7 +2227,9 @@
     {
       "builders": [
         "vm-kernel-reload-linux-debug-x64",
-        "vm-kernel-reload-linux-release-x64"
+        "vm-kernel-reload-linux-debug-x64c",
+        "vm-kernel-reload-linux-release-x64",
+        "vm-kernel-reload-linux-release-x64c"
       ],
       "meta": {
         "description": "This is the configuration for the kernel hot reload builders."
@@ -2199,7 +2255,9 @@
     {
       "builders": [
         "vm-kernel-reload-rollback-linux-debug-x64",
-        "vm-kernel-reload-rollback-linux-release-x64"
+        "vm-kernel-reload-rollback-linux-debug-x64c",
+        "vm-kernel-reload-rollback-linux-release-x64",
+        "vm-kernel-reload-rollback-linux-release-x64c"
       ],
       "meta": {
         "description": "This is the configuration for kernel reload rollback builders."
@@ -2215,7 +2273,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-reload-rollback-linux-${mode}-x64"
+            "-ndartk-reload-rollback-linux-${mode}-${arch}"
           ],
           "fileset": "vm-kernel",
           "shards": 10
diff --git a/tools/gn.py b/tools/gn.py
index 52ae73b..ce133c3 100755
--- a/tools/gn.py
+++ b/tools/gn.py
@@ -71,8 +71,7 @@
     if arch in ['ia32', 'arm', 'armv6', 'simarm', 'simarmv6', 'simarm_x64']:
         return 'x86'
     if arch in [
-            'x64', 'arm64', 'simarm64', 'arm_x64', 'x64_comp_ptr',
-            'arm64_comp_ptr', 'simarm64_comp_ptr'
+            'x64', 'arm64', 'simarm64', 'arm_x64', 'x64c', 'arm64c', 'simarm64c'
     ]:
         return 'x64'
 
@@ -81,13 +80,11 @@
 def TargetCpuForArch(arch, target_os):
     if arch in ['ia32', 'simarm', 'simarmv6']:
         return 'x86'
-    if arch in [
-            'x64', 'simarm64', 'simarm_x64', 'x64_comp_ptr', 'simarm64_comp_ptr'
-    ]:
+    if arch in ['x64', 'simarm64', 'simarm_x64', 'x64c', 'simarm64c']:
         return 'x64'
     if arch == 'arm_x64':
         return 'arm'
-    if arch == 'arm64_comp_ptr':
+    if arch == 'arm64c':
         return 'arm64'
     return arch
 
@@ -96,19 +93,19 @@
 def DartTargetCpuForArch(arch):
     if arch in ['ia32']:
         return 'ia32'
-    if arch in ['x64', 'x64_comp_ptr']:
+    if arch in ['x64', 'x64c']:
         return 'x64'
     if arch in ['arm', 'simarm', 'simarm_x64', 'arm_x64']:
         return 'arm'
     if arch in ['armv6', 'simarmv6']:
         return 'armv6'
-    if arch in ['arm64', 'simarm64', 'arm64_comp_ptr', 'simarm64_comp_ptr']:
+    if arch in ['arm64', 'simarm64', 'arm64c', 'simarm64c']:
         return 'arm64'
     return arch
 
 
 def IsCompressedPointerArch(arch):
-    return arch in ['x64_comp_ptr', 'arm64_comp_ptr', 'simarm64_comp_ptr']
+    return arch in ['x64c', 'arm64c', 'simarm64c']
 
 
 def HostOsForGn(host_os):
@@ -297,7 +294,7 @@
 
 def ProcessOptions(args):
     if args.arch == 'all':
-        args.arch = 'ia32,x64,simarm,simarm64'
+        args.arch = 'ia32,x64,simarm,simarm64,x64c,simarm64c'
     if args.mode == 'all':
         args.mode = 'debug,release,product'
     if args.os == 'all':
diff --git a/tools/run_offsets_extractor.sh b/tools/run_offsets_extractor.sh
index c9c011b..52b1376 100755
--- a/tools/run_offsets_extractor.sh
+++ b/tools/run_offsets_extractor.sh
@@ -43,8 +43,8 @@
 run release x64 ReleaseX64
 run release ia32 ReleaseIA32
 run release simarm64 ReleaseSIMARM64
-run release x64_comp_ptr ReleaseX64_COMP_PTR
-run release simarm64_comp_ptr ReleaseSIMARM64_COMP_PTR
+run release x64c ReleaseX64C
+run release simarm64c ReleaseSIMARM64C
 echo "" >>"$TEMP_JIT"
 echo "" >>"$TEMP_AOT"
 echo "#else  // !defined(PRODUCT)" >>"$TEMP_JIT"
@@ -53,8 +53,8 @@
 run product x64 ProductX64
 run product ia32 ProductIA32
 run product simarm64 ProductSIMARM64
-run product x64_comp_ptr ProductX64_COMP_PTR
-run product simarm64_comp_ptr ProductSIMARM64_COMP_PTR
+run product x64c ProductX64C
+run product simarm64c ProductSIMARM64C
 echo "" >>"$TEMP_JIT"
 echo "" >>"$TEMP_AOT"
 echo "#endif  // !defined(PRODUCT)" >>"$TEMP_JIT"
diff --git a/tools/utils.py b/tools/utils.py
index 2a5aeac..dcb68a5 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -72,9 +72,9 @@
     'simarmv6': 'ia32',
     'simarm64': 'ia32',
     'simarm_x64': 'ia32',
-    'x64_comp_ptr': 'ia32',
-    'arm64_comp_ptr': 'arm',
-    'simarm64_comp_ptr': 'ia32',
+    'x64c': 'ia32',
+    'arm64c': 'arm',
+    'simarm64c': 'ia32',
 }
 
 BASE_DIR = os.path.abspath(os.path.join(os.curdir, '..'))
