Revert "[vm] Unify hash codes in type objects"

This reverts commit e82a2230fddad0754fcf70eff3255d7b2f7ecd1f.

Reason for revert: g3 failures

Original change's description:
> [vm] Unify hash codes in type objects
>
> TEST=ci
>
> Change-Id: I53d2268c3aab6fc4583c3201051b68f8fc05d56d
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/305361
> Commit-Queue: Alexander Markov <alexmarkov@google.com>
> Reviewed-by: Ryan Macnak <rmacnak@google.com>

Change-Id: If22c8ed05cd23eb5c62c7a431311827a480263a6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/305540
Auto-Submit: Alexander Markov <alexmarkov@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index d0fc8e9..28eead0 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -257,6 +257,14 @@
   return Bool::Get(type.IsEquivalent(other, TypeEquality::kSyntactical)).ptr();
 }
 
+DEFINE_NATIVE_ENTRY(Type_getHashCode, 0, 1) {
+  const Type& type = Type::CheckedHandle(zone, arguments->NativeArgAt(0));
+  intptr_t hash_val = type.Hash();
+  ASSERT(hash_val > 0);
+  ASSERT(Smi::IsValid(hash_val));
+  return Smi::New(hash_val);
+}
+
 DEFINE_NATIVE_ENTRY(Type_equality, 0, 2) {
   const Type& type = Type::CheckedHandle(zone, arguments->NativeArgAt(0));
   const Instance& other =
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 9ac8677..cf772df 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -30,6 +30,7 @@
   V(AbstractType_getHashCode, 1)                                               \
   V(AbstractType_toString, 1)                                                  \
   V(Type_equality, 2)                                                          \
+  V(Type_getHashCode, 1)                                                       \
   V(LibraryPrefix_isLoaded, 1)                                                 \
   V(LibraryPrefix_setLoaded, 1)                                                \
   V(LibraryPrefix_loadingUnit, 1)                                              \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 1424f8a..a7b0fa9 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -1076,7 +1076,10 @@
 //
 // Caching of the canonical hash codes happens for:
 //
-//    * UntaggedAbstractType::hash_
+//    * UntaggedType::hash_
+//    * UntaggedFunctionType::hash_
+//    * UntaggedRecordType::hash_
+//    * UntaggedTypeParameter::hash_
 //    * UntaggedTypeArguments::hash_
 //    * InstancePtr (weak table)
 //    * ArrayPtr (weak table)
@@ -1093,13 +1096,25 @@
 class ClearTypeHashVisitor : public ObjectVisitor {
  public:
   explicit ClearTypeHashVisitor(Zone* zone)
-      : type_(AbstractType::Handle(zone)),
+      : type_param_(TypeParameter::Handle(zone)),
+        type_(Type::Handle(zone)),
+        function_type_(FunctionType::Handle(zone)),
+        record_type_(RecordType::Handle(zone)),
         type_args_(TypeArguments::Handle(zone)) {}
 
   void VisitObject(ObjectPtr obj) override {
-    if (obj->IsAbstractType()) {
+    if (obj->IsTypeParameter()) {
+      type_param_ ^= obj;
+      type_param_.SetHash(0);
+    } else if (obj->IsType()) {
       type_ ^= obj;
       type_.SetHash(0);
+    } else if (obj->IsFunctionType()) {
+      function_type_ ^= obj;
+      function_type_.SetHash(0);
+    } else if (obj->IsRecordType()) {
+      record_type_ ^= obj;
+      record_type_.SetHash(0);
     } else if (obj->IsTypeArguments()) {
       type_args_ ^= obj;
       type_args_.SetHash(0);
@@ -1107,7 +1122,10 @@
   }
 
  private:
-  AbstractType& type_;
+  TypeParameter& type_param_;
+  Type& type_;
+  FunctionType& function_type_;
+  RecordType& record_type_;
   TypeArguments& type_args_;
 };
 
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc
index 3a4839c..81b4c7a 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc
@@ -1199,6 +1199,15 @@
   __ Bind(normal_ir_body);  // Hash not yet computed.
 }
 
+void AsmIntrinsifier::Type_getHashCode(Assembler* assembler,
+                                       Label* normal_ir_body) {
+  __ ldr(R0, Address(SP, 0 * target::kWordSize));
+  __ ldr(R0, FieldAddress(R0, target::Type::hash_offset()));
+  __ cmp(R0, Operand(0));
+  READS_RETURN_ADDRESS_FROM_LR(__ bx(LR, NE));
+  __ Bind(normal_ir_body);  // Hash not yet computed.
+}
+
 void AsmIntrinsifier::Type_equality(Assembler* assembler,
                                     Label* normal_ir_body) {
   Label equal, not_equal, equiv_cids_may_be_generic, equiv_cids, check_legacy;
@@ -1262,7 +1271,7 @@
 void AsmIntrinsifier::AbstractType_getHashCode(Assembler* assembler,
                                                Label* normal_ir_body) {
   __ ldr(R0, Address(SP, 0 * target::kWordSize));
-  __ ldr(R0, FieldAddress(R0, target::AbstractType::hash_offset()));
+  __ ldr(R0, FieldAddress(R0, target::FunctionType::hash_offset()));
   __ cmp(R0, Operand(0));
   READS_RETURN_ADDRESS_FROM_LR(__ bx(LR, NE));
   __ Bind(normal_ir_body);  // Hash not yet computed.
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
index ae4746f..aef8a16 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
@@ -1359,6 +1359,16 @@
   __ Bind(normal_ir_body);
 }
 
+void AsmIntrinsifier::Type_getHashCode(Assembler* assembler,
+                                       Label* normal_ir_body) {
+  __ ldr(R0, Address(SP, 0 * target::kWordSize));
+  __ LoadCompressedSmi(R0, FieldAddress(R0, target::Type::hash_offset()));
+  __ cbz(normal_ir_body, R0, kObjectBytes);
+  __ ret();
+  // Hash not yet computed.
+  __ Bind(normal_ir_body);
+}
+
 void AsmIntrinsifier::Type_equality(Assembler* assembler,
                                     Label* normal_ir_body) {
   Label equal, not_equal, equiv_cids_may_be_generic, equiv_cids, check_legacy;
@@ -1423,7 +1433,7 @@
                                                Label* normal_ir_body) {
   __ ldr(R0, Address(SP, 0 * target::kWordSize));
   __ LoadCompressedSmi(R0,
-                       FieldAddress(R0, target::AbstractType::hash_offset()));
+                       FieldAddress(R0, target::FunctionType::hash_offset()));
   __ cbz(normal_ir_body, R0, kObjectBytes);
   __ ret();
   // Hash not yet computed.
diff --git a/runtime/vm/compiler/asm_intrinsifier_ia32.cc b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
index 448833b..740501fd 100644
--- a/runtime/vm/compiler/asm_intrinsifier_ia32.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
@@ -1342,6 +1342,17 @@
   // Hash not yet computed.
 }
 
+void AsmIntrinsifier::Type_getHashCode(Assembler* assembler,
+                                       Label* normal_ir_body) {
+  __ movl(EAX, Address(ESP, +1 * target::kWordSize));  // Type object.
+  __ movl(EAX, FieldAddress(EAX, target::Type::hash_offset()));
+  __ testl(EAX, EAX);
+  __ j(EQUAL, normal_ir_body, Assembler::kNearJump);
+  __ ret();
+  __ Bind(normal_ir_body);
+  // Hash not yet computed.
+}
+
 void AsmIntrinsifier::Type_equality(Assembler* assembler,
                                     Label* normal_ir_body) {
   Label equal, not_equal, equiv_cids_may_be_generic, equiv_cids, check_legacy;
@@ -1405,8 +1416,8 @@
 
 void AsmIntrinsifier::AbstractType_getHashCode(Assembler* assembler,
                                                Label* normal_ir_body) {
-  __ movl(EAX, Address(ESP, +1 * target::kWordSize));  // AbstractType object.
-  __ movl(EAX, FieldAddress(EAX, target::AbstractType::hash_offset()));
+  __ movl(EAX, Address(ESP, +1 * target::kWordSize));  // FunctionType object.
+  __ movl(EAX, FieldAddress(EAX, target::FunctionType::hash_offset()));
   __ testl(EAX, EAX);
   __ j(EQUAL, normal_ir_body, Assembler::kNearJump);
   __ ret();
diff --git a/runtime/vm/compiler/asm_intrinsifier_riscv.cc b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
index 02745cd..5dba40c 100644
--- a/runtime/vm/compiler/asm_intrinsifier_riscv.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
@@ -1396,6 +1396,16 @@
   __ Bind(normal_ir_body);
 }
 
+void AsmIntrinsifier::Type_getHashCode(Assembler* assembler,
+                                       Label* normal_ir_body) {
+  __ lx(A0, Address(SP, 0 * target::kWordSize));
+  __ LoadCompressed(A0, FieldAddress(A0, target::Type::hash_offset()));
+  __ beqz(A0, normal_ir_body, Assembler::kNearJump);
+  __ ret();
+  // Hash not yet computed.
+  __ Bind(normal_ir_body);
+}
+
 void AsmIntrinsifier::Type_equality(Assembler* assembler,
                                     Label* normal_ir_body) {
   Label equal, not_equal, equiv_cids_may_be_generic, equiv_cids, check_legacy;
@@ -1458,7 +1468,7 @@
 void AsmIntrinsifier::AbstractType_getHashCode(Assembler* assembler,
                                                Label* normal_ir_body) {
   __ lx(A0, Address(SP, 0 * target::kWordSize));
-  __ LoadCompressed(A0, FieldAddress(A0, target::AbstractType::hash_offset()));
+  __ LoadCompressed(A0, FieldAddress(A0, target::FunctionType::hash_offset()));
   __ beqz(A0, normal_ir_body, Assembler::kNearJump);
   __ ret();
   // Hash not yet computed.
diff --git a/runtime/vm/compiler/asm_intrinsifier_x64.cc b/runtime/vm/compiler/asm_intrinsifier_x64.cc
index c1ed50d..51c2a6c 100644
--- a/runtime/vm/compiler/asm_intrinsifier_x64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_x64.cc
@@ -1248,6 +1248,19 @@
   // Hash not yet computed.
 }
 
+void AsmIntrinsifier::Type_getHashCode(Assembler* assembler,
+                                       Label* normal_ir_body) {
+  __ movq(RAX, Address(RSP, +1 * target::kWordSize));  // Type object.
+  __ LoadCompressedSmi(RAX, FieldAddress(RAX, target::Type::hash_offset()));
+  ASSERT(kSmiTag == 0);
+  ASSERT(kSmiTagShift == 1);
+  __ OBJ(test)(RAX, RAX);
+  __ j(ZERO, normal_ir_body, Assembler::kNearJump);
+  __ ret();
+  __ Bind(normal_ir_body);
+  // Hash not yet computed.
+}
+
 void AsmIntrinsifier::Type_equality(Assembler* assembler,
                                     Label* normal_ir_body) {
   Label equal, not_equal, equiv_cids_may_be_generic, equiv_cids, check_legacy;
@@ -1311,9 +1324,9 @@
 
 void AsmIntrinsifier::AbstractType_getHashCode(Assembler* assembler,
                                                Label* normal_ir_body) {
-  __ movq(RAX, Address(RSP, +1 * target::kWordSize));  // AbstractType object.
+  __ movq(RAX, Address(RSP, +1 * target::kWordSize));  // FunctionType object.
   __ LoadCompressedSmi(RAX,
-                       FieldAddress(RAX, target::AbstractType::hash_offset()));
+                       FieldAddress(RAX, target::FunctionType::hash_offset()));
   ASSERT(kSmiTag == 0);
   ASSERT(kSmiTagShift == 1);
   __ OBJ(test)(RAX, RAX);
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index 0a409f2..96cdec6 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -374,6 +374,7 @@
   V(_TwoByteString, ==, TwoByteString_equality, 0x4ea9ddc9)                    \
   V(_AbstractType, get:hashCode, AbstractType_getHashCode, 0x75e0d454)         \
   V(_AbstractType, ==, AbstractType_equality, 0x465868ae)                      \
+  V(_Type, get:hashCode, Type_getHashCode, 0x75e0d454)                         \
   V(_Type, ==, Type_equality, 0x465868ae)                                      \
   V(::, _getHash, Object_getHash, 0xc60ff758)                                  \
 
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 0f45b7f..e7e16f6 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -717,7 +717,6 @@
 class AbstractType : public AllStatic {
  public:
   static word flags_offset();
-  static word hash_offset();
   static word type_test_stub_entry_point_offset();
   static word InstanceSize();
   FINAL_CLASS();
@@ -725,6 +724,7 @@
 
 class Type : public AllStatic {
  public:
+  static word hash_offset();
   static word arguments_offset();
   static word InstanceSize();
   FINAL_CLASS();
@@ -732,6 +732,7 @@
 
 class FunctionType : public AllStatic {
  public:
+  static word hash_offset();
   static word packed_parameter_counts_offset();
   static word packed_type_parameter_counts_offset();
   static word named_parameter_names_offset();
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 065ddd3..c380896 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -113,7 +113,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -544,7 +543,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -567,16 +567,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -617,7 +618,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x2e8, 0x2ec, 0x2f0, 0x2f4, 0x2f8, -1, 0x2fc, -1,
         0x300, 0x304, -1,    -1,    -1,    -1, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -820,7 +821,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -1252,7 +1252,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -1276,16 +1277,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -1329,7 +1331,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x5d0, 0x5d8, 0x5e0, 0x5e8, -1,    -1,    0x5f0, 0x5f8,
         0x600, 0x608, 0x610, -1,    0x618, 0x620, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -1529,7 +1531,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -1960,7 +1961,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -1983,16 +1985,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -2032,7 +2035,7 @@
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x2e8, 0x2ec, 0x2f0, 0x2f4, -1, -1, -1, 0x2f8};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -2235,7 +2238,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -2667,7 +2669,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -2691,16 +2694,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -2746,7 +2750,7 @@
         0x610, 0x618, 0x620, 0x628, 0x630, 0x638, 0x640, -1,
         -1,    -1,    -1,    0x648, 0x650, -1,    -1,    0x658,
         0x660, 0x668, -1,    -1,    -1,    -1,    -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -2947,7 +2951,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -3380,7 +3383,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x20;
@@ -3404,16 +3408,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x20;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x28;
+    FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x24;
+    FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x1c;
+    FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x22;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
@@ -3455,7 +3460,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x5d8, 0x5e0, 0x5e8, 0x5f0, -1,    -1,    0x5f8, 0x600,
         0x608, 0x610, 0x618, -1,    0x620, 0x628, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x18;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x10;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -3656,7 +3661,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -4089,7 +4093,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x20;
@@ -4113,16 +4118,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x20;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x28;
+    FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x24;
+    FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x1c;
+    FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x22;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
@@ -4166,7 +4172,7 @@
         0x618, 0x620, 0x628, 0x630, 0x638, 0x640, 0x648, -1,
         -1,    -1,    -1,    0x650, 0x658, -1,    -1,    0x660,
         0x668, 0x670, -1,    -1,    -1,    -1,    -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x18;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x10;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -4366,7 +4372,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -4797,7 +4802,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -4820,16 +4826,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -4871,7 +4878,7 @@
         -1,    -1,    -1, -1, -1, 0x2e8, 0x2ec, 0x2f0, -1,    -1,    0x2f4,
         0x2f8, 0x2fc, -1, -1, -1, 0x300, 0x304, 0x308, 0x30c, 0x310, 0x314,
         0x318, 0x31c, -1, -1, -1, -1,    0x320, 0x324, 0x328, 0x32c};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -5074,7 +5081,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -5506,7 +5512,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -5530,16 +5537,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -5584,7 +5592,7 @@
         -1,    -1,    -1, -1, -1, 0x5d0, 0x5d8, 0x5e0, -1,    -1,    0x5e8,
         0x5f0, 0x5f8, -1, -1, -1, 0x600, 0x608, 0x610, 0x618, 0x620, 0x628,
         0x630, 0x638, -1, -1, -1, -1,    0x640, 0x648, 0x650, 0x658};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -5783,7 +5791,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -6209,7 +6216,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -6232,16 +6240,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -6282,7 +6291,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x2e8, 0x2ec, 0x2f0, 0x2f4, 0x2f8, -1, 0x2fc, -1,
         0x300, 0x304, -1,    -1,    -1,    -1, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -6482,7 +6491,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -6909,7 +6917,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -6933,16 +6942,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -6986,7 +6996,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x5d0, 0x5d8, 0x5e0, 0x5e8, -1,    -1,    0x5f0, 0x5f8,
         0x600, 0x608, 0x610, -1,    0x618, 0x620, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -7183,7 +7193,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -7609,7 +7618,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -7632,16 +7642,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -7681,7 +7692,7 @@
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x2e8, 0x2ec, 0x2f0, 0x2f4, -1, -1, -1, 0x2f8};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -7881,7 +7892,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -8308,7 +8318,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -8332,16 +8343,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -8387,7 +8399,7 @@
         0x610, 0x618, 0x620, 0x628, 0x630, 0x638, 0x640, -1,
         -1,    -1,    -1,    0x648, 0x650, -1,    -1,    0x658,
         0x660, 0x668, -1,    -1,    -1,    -1,    -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -8585,7 +8597,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -9013,7 +9024,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x20;
@@ -9037,16 +9049,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x20;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x28;
+    FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x24;
+    FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x1c;
+    FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x22;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
@@ -9088,7 +9101,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         0x5d8, 0x5e0, 0x5e8, 0x5f0, -1,    -1,    0x5f8, 0x600,
         0x608, 0x610, 0x618, -1,    0x620, 0x628, -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x18;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x10;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -9286,7 +9299,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -9714,7 +9726,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x20;
@@ -9738,16 +9751,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x20;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x28;
+    FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x24;
+    FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x1c;
+    FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x22;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
@@ -9791,7 +9805,7 @@
         0x618, 0x620, 0x628, 0x630, 0x638, 0x640, 0x648, -1,
         -1,    -1,    -1,    0x650, 0x658, -1,    -1,    0x660,
         0x668, 0x670, -1,    -1,    -1,    -1,    -1,    -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x18;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x10;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -9988,7 +10002,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0xfffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x8;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x10;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -10414,7 +10427,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0xc;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x18;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x14;
@@ -10437,16 +10451,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x14;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x20;
+    FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x1c;
+    FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x14;
+    FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x1a;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0xc;
 static constexpr dart::compiler::target::word
@@ -10488,7 +10503,7 @@
         -1,    -1,    -1, -1, -1, 0x2e8, 0x2ec, 0x2f0, -1,    -1,    0x2f4,
         0x2f8, 0x2fc, -1, -1, -1, 0x300, 0x304, 0x308, 0x30c, 0x310, 0x314,
         0x318, 0x31c, -1, -1, -1, -1,    0x320, 0x324, 0x328, 0x32c};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x14;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word Array_header_size = 0xc;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x8;
@@ -10688,7 +10703,6 @@
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AbstractType_flags_offset = 0x10;
-static constexpr dart::compiler::target::word AbstractType_hash_offset = 0x20;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -11115,7 +11129,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     0x10;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 0x10;
-static constexpr dart::compiler::target::word Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     0x30;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 0x28;
@@ -11139,16 +11154,17 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 0x8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     0x28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 0x40;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 0x40;
+    FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 0x38;
+    FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 0x28;
+    FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 0x32;
 static constexpr dart::compiler::target::word TypeArguments_hash_offset = 0x18;
 static constexpr dart::compiler::target::word
@@ -11193,7 +11209,7 @@
         -1,    -1,    -1, -1, -1, 0x5d0, 0x5d8, 0x5e0, -1,    -1,    0x5e8,
         0x5f0, 0x5f8, -1, -1, -1, 0x600, 0x608, 0x610, 0x618, 0x620, 0x628,
         0x630, 0x638, -1, -1, -1, -1,    0x640, 0x648, 0x650, 0x658};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x28;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 0x20;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word Array_header_size = 0x18;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 0x10;
@@ -11401,8 +11417,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x8;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x10;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word
@@ -11870,7 +11884,8 @@
     AOT_TimelineStream_enabled_offset = 0x8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0xc;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -11897,16 +11912,18 @@
     0x4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x20;
+    AOT_FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x1c;
+    AOT_FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x14;
+    AOT_FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x1a;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -11958,7 +11975,7 @@
         0x2e8, 0x2ec, 0x2f0, 0x2f4, 0x2f8, -1, 0x2fc, -1,
         0x300, 0x304, -1,    -1,    -1,    -1, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x14;
+    0x10;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0xc;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x8;
@@ -12184,8 +12201,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -12653,7 +12668,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -12680,16 +12696,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -12741,7 +12759,7 @@
         0x5d0, 0x5d8, 0x5e0, 0x5e8, -1,    -1,    0x5f0, 0x5f8,
         0x600, 0x608, 0x610, -1,    0x618, 0x620, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -12970,8 +12988,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -13439,7 +13455,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -13466,16 +13483,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -13529,7 +13548,7 @@
         -1,    -1,    -1,    0x648, 0x650, -1,    -1,    0x658,
         0x660, 0x668, -1,    -1,    -1,    -1,    -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -13755,8 +13774,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x18;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -14226,7 +14243,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -14253,16 +14271,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x28;
+    AOT_FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x24;
+    AOT_FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x1c;
+    AOT_FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x22;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -14314,7 +14334,7 @@
         0x5d8, 0x5e0, 0x5e8, 0x5f0, -1,    -1,    0x5f8, 0x600,
         0x608, 0x610, 0x618, -1,    0x620, 0x628, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x20;
+    0x18;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x10;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -14540,8 +14560,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x18;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -15011,7 +15029,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -15038,16 +15057,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x28;
+    AOT_FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x24;
+    AOT_FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x1c;
+    AOT_FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x22;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -15101,7 +15122,7 @@
         -1,    -1,    -1,    0x650, 0x658, -1,    -1,    0x660,
         0x668, 0x670, -1,    -1,    -1,    -1,    -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x20;
+    0x18;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x10;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -15327,8 +15348,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x8;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x10;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word
@@ -15796,7 +15815,8 @@
     AOT_TimelineStream_enabled_offset = 0x8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0xc;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -15823,16 +15843,18 @@
     0x4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x20;
+    AOT_FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x1c;
+    AOT_FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x14;
+    AOT_FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x1a;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -15885,7 +15907,7 @@
         0x2f8, 0x2fc, -1, -1, -1, 0x300, 0x304, 0x308, 0x30c, 0x310, 0x314,
         0x318, 0x31c, -1, -1, -1, -1,    0x320, 0x324, 0x328, 0x32c};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x14;
+    0x10;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0xc;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x8;
@@ -16111,8 +16133,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -16580,7 +16600,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -16607,16 +16628,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -16669,7 +16692,7 @@
         0x5f0, 0x5f8, -1, -1, -1, 0x600, 0x608, 0x610, 0x618, 0x620, 0x628,
         0x630, 0x638, -1, -1, -1, -1,    0x640, 0x648, 0x650, 0x658};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -16894,8 +16917,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x8;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x10;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word
@@ -17357,7 +17378,8 @@
     AOT_TimelineStream_enabled_offset = 0x8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0xc;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -17384,16 +17406,18 @@
     0x4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x20;
+    AOT_FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x1c;
+    AOT_FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x14;
+    AOT_FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x1a;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -17445,7 +17469,7 @@
         0x2e8, 0x2ec, 0x2f0, 0x2f4, 0x2f8, -1, 0x2fc, -1,
         0x300, 0x304, -1,    -1,    -1,    -1, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x14;
+    0x10;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0xc;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x8;
@@ -17668,8 +17692,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -18131,7 +18153,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -18158,16 +18181,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -18219,7 +18244,7 @@
         0x5d0, 0x5d8, 0x5e0, 0x5e8, -1,    -1,    0x5f0, 0x5f8,
         0x600, 0x608, 0x610, -1,    0x618, 0x620, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -18445,8 +18470,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -18908,7 +18931,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -18935,16 +18959,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -18998,7 +19024,7 @@
         -1,    -1,    -1,    0x648, 0x650, -1,    -1,    0x658,
         0x660, 0x668, -1,    -1,    -1,    -1,    -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -19221,8 +19247,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x18;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -19686,7 +19710,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -19713,16 +19738,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x28;
+    AOT_FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x24;
+    AOT_FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x1c;
+    AOT_FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x22;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -19774,7 +19801,7 @@
         0x5d8, 0x5e0, 0x5e8, 0x5f0, -1,    -1,    0x5f8, 0x600,
         0x608, 0x610, 0x618, -1,    0x620, 0x628, -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x20;
+    0x18;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x10;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -19997,8 +20024,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x18;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -20462,7 +20487,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x1c;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x18;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -20489,16 +20515,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x28;
+    AOT_FunctionType_named_parameter_names_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x2c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x24;
+    AOT_FunctionType_parameter_types_offset = 0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x1c;
+    AOT_FunctionType_type_parameters_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x22;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -20552,7 +20580,7 @@
         -1,    -1,    -1,    0x650, 0x658, -1,    -1,    0x660,
         0x668, 0x670, -1,    -1,    -1,    -1,    -1,    -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x20;
+    0x18;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x10;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
@@ -20775,8 +20803,6 @@
     0xfffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x8;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x10;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x4;
 static constexpr dart::compiler::target::word
@@ -21238,7 +21264,8 @@
     AOT_TimelineStream_enabled_offset = 0x8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0xc;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x10;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x14;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x18;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -21265,16 +21292,18 @@
     0x4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x14;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x20;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x20;
+    AOT_FunctionType_named_parameter_names_offset = 0x1c;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x24;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x1c;
+    AOT_FunctionType_parameter_types_offset = 0x18;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x14;
+    AOT_FunctionType_type_parameters_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x1a;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -21327,7 +21356,7 @@
         0x2f8, 0x2fc, -1, -1, -1, 0x300, 0x304, 0x308, 0x30c, 0x310, 0x314,
         0x318, 0x31c, -1, -1, -1, -1,    0x320, 0x324, 0x328, 0x32c};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x14;
+    0x10;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0xc;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x8;
@@ -21550,8 +21579,6 @@
     0x7ffffffffffffff;
 static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_AbstractType_hash_offset =
-    0x20;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 0x8;
 static constexpr dart::compiler::target::word
@@ -22013,7 +22040,8 @@
     AOT_TimelineStream_enabled_offset = 0x10;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     0x10;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 0x20;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 0x28;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 0x30;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -22040,16 +22068,18 @@
     0x8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 0x28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset =
+    0x40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 0x40;
+    AOT_FunctionType_named_parameter_names_offset = 0x38;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 0x48;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 0x4c;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 0x38;
+    AOT_FunctionType_parameter_types_offset = 0x30;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 0x28;
+    AOT_FunctionType_type_parameters_offset = 0x20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     0x32;
 static constexpr dart::compiler::target::word AOT_TypeArguments_hash_offset =
@@ -22102,7 +22132,7 @@
         0x5f0, 0x5f8, -1, -1, -1, 0x600, 0x608, 0x610, 0x618, 0x620, 0x628,
         0x630, 0x638, -1, -1, -1, -1,    0x640, 0x648, 0x650, 0x658};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    0x28;
+    0x20;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 0x10;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 0x18;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 0x10;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index b5b3a74..b62ddbd 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -103,7 +103,6 @@
   CONSTANT(SubtypeTestCache, kTestResult)                                      \
   CONSTANT(TypeArguments, kMaxElements)                                        \
   FIELD(AbstractType, flags_offset)                                            \
-  FIELD(AbstractType, hash_offset)                                             \
   FIELD(AbstractType, type_test_stub_entry_point_offset)                       \
   FIELD(ArgumentsDescriptor, count_offset)                                     \
   FIELD(ArgumentsDescriptor, size_offset)                                      \
@@ -355,6 +354,7 @@
   FIELD(TimelineStream, enabled_offset)                                        \
   FIELD(TwoByteString, data_offset)                                            \
   FIELD(Type, arguments_offset)                                                \
+  FIELD(Type, hash_offset)                                                     \
   FIELD(Finalizer, type_arguments_offset)                                      \
   FIELD(Finalizer, callback_offset)                                            \
   FIELD(FinalizerBase, all_entries_offset)                                     \
@@ -368,6 +368,7 @@
   FIELD(FinalizerEntry, token_offset)                                          \
   FIELD(FinalizerEntry, value_offset)                                          \
   FIELD(NativeFinalizer, callback_offset)                                      \
+  FIELD(FunctionType, hash_offset)                                             \
   FIELD(FunctionType, named_parameter_names_offset)                            \
   FIELD(FunctionType, packed_parameter_counts_offset)                          \
   FIELD(FunctionType, packed_type_parameter_counts_offset)                     \
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 99c2cab..eb22d0b 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -21601,7 +21601,10 @@
   return false;
 }
 
-uword AbstractType::ComputeHash() const {
+uword AbstractType::Hash() const {
+  // All subclasses should implement this appropriately, so the only value that
+  // should reach this implementation should be the null value.
+  ASSERT(IsNull());
   // AbstractType is an abstract class.
   UNREACHABLE();
   return 0;
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 8fe8e8c..ca882cf 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -8528,9 +8528,6 @@
   static intptr_t flags_offset() {
     return OFFSET_OF(UntaggedAbstractType, flags_);
   }
-  static intptr_t hash_offset() {
-    return OFFSET_OF(UntaggedAbstractType, hash_);
-  }
 
   bool IsFinalized() const {
     const auto state = type_state();
@@ -8666,8 +8663,7 @@
   // list and mark ambiguous triplets to be printed.
   virtual void EnumerateURIs(URIs* uris) const;
 
-  uword Hash() const;
-  virtual uword ComputeHash() const;
+  virtual uword Hash() const;
 
   // The name of this type's class, i.e. without the type argument names of this
   // type.
@@ -8841,8 +8837,6 @@
                                const AbstractType& other_type,
                                TypeEquality kind) const;
 
-  void SetHash(intptr_t value) const;
-
   UntaggedAbstractType::TypeState type_state() const {
     return static_cast<UntaggedAbstractType::TypeState>(
         UntaggedAbstractType::TypeStateBits::decode(untag()->flags()));
@@ -8853,7 +8847,6 @@
 
   HEAP_OBJECT_IMPLEMENTATION(AbstractType, Instance);
   friend class Class;
-  friend class ClearTypeHashVisitor;
   friend class Function;
   friend class TypeArguments;
 };
@@ -8865,6 +8858,7 @@
   static intptr_t arguments_offset() {
     return OFFSET_OF(UntaggedType, arguments_);
   }
+  static intptr_t hash_offset() { return OFFSET_OF(UntaggedType, hash_); }
   virtual bool HasTypeClass() const {
     ASSERT(type_class_id() != kIllegalCid);
     return true;
@@ -8917,7 +8911,8 @@
   virtual void PrintName(NameVisibility visibility,
                          BaseTextBuffer* printer) const;
 
-  virtual uword ComputeHash() const;
+  virtual uword Hash() const;
+  uword ComputeHash() const;
 
   static intptr_t InstanceSize() {
     return RoundedAllocationSize(sizeof(UntaggedType));
@@ -8992,6 +8987,8 @@
                      Heap::Space space = Heap::kOld);
 
  private:
+  void SetHash(intptr_t value) const;
+
   // Takes an intptr_t since the cids of some classes are larger than will fit
   // in ClassIdTagType. This allows us to guard against that case, instead of
   // silently truncating the cid.
@@ -9002,6 +8999,7 @@
   FINAL_HEAP_OBJECT_IMPLEMENTATION(Type, AbstractType);
   friend class Class;
   friend class TypeArguments;
+  friend class ClearTypeHashVisitor;
 };
 
 // A FunctionType represents the type of a function. It describes most of the
@@ -9022,6 +9020,9 @@
   using PackedNumOptionalParameters =
       UntaggedFunctionType::PackedNumOptionalParameters;
 
+  static intptr_t hash_offset() {
+    return OFFSET_OF(UntaggedFunctionType, hash_);
+  }
   virtual bool HasTypeClass() const { return false; }
   FunctionTypePtr ToNullability(Nullability value, Heap::Space space) const;
   virtual classid_t type_class_id() const { return kIllegalCid; }
@@ -9057,7 +9058,8 @@
   virtual void PrintName(NameVisibility visibility,
                          BaseTextBuffer* printer) const;
 
-  virtual uword ComputeHash() const;
+  virtual uword Hash() const;
+  uword ComputeHash() const;
 
   bool IsSubtypeOf(
       const FunctionType& other,
@@ -9286,10 +9288,13 @@
   static FunctionTypePtr Clone(const FunctionType& orig, Heap::Space space);
 
  private:
+  void SetHash(intptr_t value) const;
+
   static FunctionTypePtr New(Heap::Space space);
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(FunctionType, AbstractType);
   friend class Class;
+  friend class ClearTypeHashVisitor;
   friend class Function;
 };
 
@@ -9363,6 +9368,8 @@
   virtual void PrintName(NameVisibility visibility,
                          BaseTextBuffer* printer) const;
 
+  virtual uword Hash() const;
+
   // Returns type corresponding to [this] type parameter from the
   // given [instantiator_type_arguments] and [function_type_arguments].
   // Unlike InstantiateFrom, nullability of type parameter is not applied to
@@ -9391,7 +9398,8 @@
                               Nullability nullability);
 
  private:
-  virtual uword ComputeHash() const;
+  uword ComputeHash() const;
+  void SetHash(intptr_t value) const;
 
   void set_owner(const Object& value) const;
 
@@ -9399,6 +9407,7 @@
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(TypeParameter, AbstractType);
   friend class Class;
+  friend class ClearTypeHashVisitor;
 };
 
 class Number : public Instance {
@@ -11037,6 +11046,7 @@
 // names of the named fields.
 class RecordType : public AbstractType {
  public:
+  static intptr_t hash_offset() { return OFFSET_OF(UntaggedRecordType, hash_); }
   virtual bool HasTypeClass() const { return false; }
   RecordTypePtr ToNullability(Nullability value, Heap::Space space) const;
   virtual classid_t type_class_id() const { return kIllegalCid; }
@@ -11072,7 +11082,8 @@
   virtual void PrintName(NameVisibility visibility,
                          BaseTextBuffer* printer) const;
 
-  virtual uword ComputeHash() const;
+  virtual uword Hash() const;
+  uword ComputeHash() const;
 
   bool IsSubtypeOf(
       const RecordType& other,
@@ -11103,6 +11114,8 @@
                            Heap::Space space = Heap::kOld);
 
  private:
+  void SetHash(intptr_t value) const;
+
   void set_shape(RecordShape shape) const;
   void set_field_types(const Array& value) const;
 
@@ -11111,6 +11124,7 @@
   FINAL_HEAP_OBJECT_IMPLEMENTATION(RecordType, AbstractType);
   friend class Class;
   friend class ClassFinalizer;
+  friend class ClearTypeHashVisitor;
   friend class Record;
 };
 
@@ -13039,7 +13053,7 @@
   return array.At((index * kEntryLength) + kTargetFunctionIndex);
 }
 
-inline uword AbstractType::Hash() const {
+inline uword Type::Hash() const {
   ASSERT(IsFinalized());
   intptr_t result = Smi::Value(untag()->hash());
   if (result != 0) {
@@ -13048,7 +13062,37 @@
   return ComputeHash();
 }
 
-inline void AbstractType::SetHash(intptr_t value) const {
+inline void Type::SetHash(intptr_t value) const {
+  // This is only safe because we create a new Smi, which does not cause
+  // heap allocation.
+  untag()->set_hash(Smi::New(value));
+}
+
+inline uword FunctionType::Hash() const {
+  ASSERT(IsFinalized());
+  intptr_t result = Smi::Value(untag()->hash());
+  if (result != 0) {
+    return result;
+  }
+  return ComputeHash();
+}
+
+inline void FunctionType::SetHash(intptr_t value) const {
+  // This is only safe because we create a new Smi, which does not cause
+  // heap allocation.
+  untag()->set_hash(Smi::New(value));
+}
+
+inline uword RecordType::Hash() const {
+  ASSERT(IsFinalized());
+  intptr_t result = Smi::Value(untag()->hash());
+  if (result != 0) {
+    return result;
+  }
+  return ComputeHash();
+}
+
+inline void RecordType::SetHash(intptr_t value) const {
   // This is only safe because we create a new Smi, which does not cause
   // heap allocation.
   untag()->set_hash(Smi::New(value));
@@ -13058,6 +13102,21 @@
   return Array::LengthOf(field_types());
 }
 
+inline uword TypeParameter::Hash() const {
+  ASSERT(IsFinalized());
+  intptr_t result = Smi::Value(untag()->hash());
+  if (result != 0) {
+    return result;
+  }
+  return ComputeHash();
+}
+
+inline void TypeParameter::SetHash(intptr_t value) const {
+  // This is only safe because we create a new Smi, which does not cause
+  // heap allocation.
+  untag()->set_hash(Smi::New(value));
+}
+
 inline uword TypeArguments::Hash() const {
   if (IsNull()) return kAllDynamicHash;
   intptr_t result = Smi::Value(untag()->hash());
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index e8a22ff..6afa8d2 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -2643,7 +2643,6 @@
   // Accessed from generated code.
   std::atomic<uint32_t> flags_;
   COMPRESSED_POINTER_FIELD(CodePtr, type_test_stub)
-  COMPRESSED_POINTER_FIELD(SmiPtr, hash)
   VISIT_FROM(type_test_stub)
 
   uint32_t flags() const { return flags_.load(std::memory_order_relaxed); }
@@ -2683,7 +2682,8 @@
   RAW_HEAP_OBJECT_IMPLEMENTATION(Type);
 
   COMPRESSED_POINTER_FIELD(TypeArgumentsPtr, arguments)
-  VISIT_TO(arguments)
+  COMPRESSED_POINTER_FIELD(SmiPtr, hash)
+  VISIT_TO(hash)
 
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
 
@@ -2707,7 +2707,8 @@
   COMPRESSED_POINTER_FIELD(AbstractTypePtr, result_type)
   COMPRESSED_POINTER_FIELD(ArrayPtr, parameter_types)
   COMPRESSED_POINTER_FIELD(ArrayPtr, named_parameter_names);
-  VISIT_TO(named_parameter_names)
+  COMPRESSED_POINTER_FIELD(SmiPtr, hash)
+  VISIT_TO(hash)
   AtomicBitFieldContainer<uint32_t> packed_parameter_counts_;
   AtomicBitFieldContainer<uint16_t> packed_type_parameter_counts_;
 
@@ -2757,7 +2758,8 @@
 
   COMPRESSED_SMI_FIELD(SmiPtr, shape)
   COMPRESSED_POINTER_FIELD(ArrayPtr, field_types)
-  VISIT_TO(field_types)
+  COMPRESSED_SMI_FIELD(SmiPtr, hash)
+  VISIT_TO(hash)
 
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
 };
@@ -2772,6 +2774,7 @@
  private:
   RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
 
+  COMPRESSED_POINTER_FIELD(SmiPtr, hash)
   // FunctionType or Smi (class id).
   COMPRESSED_POINTER_FIELD(ObjectPtr, owner)
   VISIT_TO(owner)
diff --git a/sdk/lib/_internal/vm/lib/type_patch.dart b/sdk/lib/_internal/vm/lib/type_patch.dart
index 2120f6a..cd48226 100644
--- a/sdk/lib/_internal/vm/lib/type_patch.dart
+++ b/sdk/lib/_internal/vm/lib/type_patch.dart
@@ -28,6 +28,11 @@
   }
 
   @pragma("vm:recognized", "asm-intrinsic")
+  @pragma("vm:exact-result-type", "dart:core#_Smi")
+  @pragma("vm:external-name", "Type_getHashCode")
+  external int get hashCode;
+
+  @pragma("vm:recognized", "asm-intrinsic")
   @pragma("vm:exact-result-type", bool)
   @pragma("vm:external-name", "Type_equality")
   external bool operator ==(other);