[vm] Unify nullability and type state among all types

This change moves 'nullability' and 'type_state' from all kinds of
types to AbstractType base class. This removes a lot of code
duplication and allows uniform access to nullability and type state
for all kinds of types.

TEST=ci
Fixes https://github.com/dart-lang/sdk/issues/47034

Change-Id: I1f0dc7fda78426db83fec6a20ebebcd632ad6d99
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/260662
Reviewed-by: Tess Strickland <sstrickl@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/vm/app_snapshot.cc b/runtime/vm/app_snapshot.cc
index ad17e41..44e2d74 100644
--- a/runtime/vm/app_snapshot.cc
+++ b/runtime/vm/app_snapshot.cc
@@ -4046,10 +4046,6 @@
   }
 };
 
-// Used to pack nullability into other serialized values.
-static constexpr intptr_t kNullabilityBitSize = 2;
-static constexpr intptr_t kNullabilityBitMask = (1 << kNullabilityBitSize) - 1;
-
 #if !defined(DART_PRECOMPILED_RUNTIME)
 class TypeSerializationCluster
     : public CanonicalSetSerializationCluster<
@@ -4073,9 +4069,9 @@
 
     PushFromTo(type);
 
-    ASSERT(type->untag()->type_class_id_ != kIllegalCid);
+    ASSERT(type->untag()->type_class_id() != kIllegalCid);
     ClassPtr type_class =
-        s->isolate_group()->class_table()->At(type->untag()->type_class_id_);
+        s->isolate_group()->class_table()->At(type->untag()->type_class_id());
     s->Push(type_class);
   }
 
@@ -4108,7 +4104,7 @@
   // Keep in sync with Type::Canonicalize.
   virtual bool IsInCanonicalSet(Serializer* s, TypePtr type) {
     ClassPtr type_class =
-        s->isolate_group()->class_table()->At(type->untag()->type_class_id_);
+        s->isolate_group()->class_table()->At(type->untag()->type_class_id());
     if (type_class->untag()->declaration_type() != type) {
       return true;
     }
@@ -4123,25 +4119,12 @@
 #if defined(DART_PRECOMPILER)
     if (FLAG_write_v8_snapshot_profile_to != nullptr) {
       ClassPtr type_class =
-          s->isolate_group()->class_table()->At(type->untag()->type_class_id_);
+          s->isolate_group()->class_table()->At(type->untag()->type_class_id());
       s->AttributePropertyRef(type_class, "<type_class>");
     }
 #endif
     WriteFromTo(type);
-    COMPILE_ASSERT(
-        std::is_unsigned<decltype(UntaggedType::type_class_id_)>::value);
-    s->WriteUnsigned(type->untag()->type_class_id_);
-    ASSERT(type->untag()->type_state_ < (1 << UntaggedType::kTypeStateBitSize));
-    ASSERT(type->untag()->nullability_ < (1 << kNullabilityBitSize));
-    static_assert(UntaggedType::kTypeStateBitSize + kNullabilityBitSize <=
-                      kBitsPerByte * sizeof(uint8_t),
-                  "Cannot pack type_state_ and nullability_ into a uint8_t");
-    const uint8_t combined =
-        (type->untag()->type_state_ << kNullabilityBitSize) |
-        type->untag()->nullability_;
-    ASSERT_EQUAL(type->untag()->type_state_, combined >> kNullabilityBitSize);
-    ASSERT_EQUAL(type->untag()->nullability_, combined & kNullabilityBitMask);
-    s->Write<uint8_t>(combined);
+    s->WriteUnsigned(type->untag()->flags_);
   }
 };
 #endif  // !DART_PRECOMPILED_RUNTIME
@@ -4170,12 +4153,7 @@
       Deserializer::InitializeHeader(type, kTypeCid, Type::InstanceSize(),
                                      mark_canonical);
       d.ReadFromTo(type);
-      COMPILE_ASSERT(
-          std::is_unsigned<decltype(UntaggedType::type_class_id_)>::value);
-      type->untag()->type_class_id_ = d.ReadUnsigned();
-      const uint8_t combined = d.Read<uint8_t>();
-      type->untag()->type_state_ = combined >> kNullabilityBitSize;
-      type->untag()->nullability_ = combined & kNullabilityBitMask;
+      type->untag()->flags_ = d.ReadUnsigned();
     }
   }
 
@@ -4257,19 +4235,8 @@
   void WriteFunctionType(Serializer* s, FunctionTypePtr type) {
     AutoTraceObject(type);
     WriteFromTo(type);
-    ASSERT(type->untag()->type_state_ <
-           (1 << UntaggedFunctionType::kTypeStateBitSize));
-    ASSERT(type->untag()->nullability_ < (1 << kNullabilityBitSize));
-    static_assert(
-        UntaggedFunctionType::kTypeStateBitSize + kNullabilityBitSize <=
-            kBitsPerByte * sizeof(uint8_t),
-        "Cannot pack type_state_ and nullability_ into a uint8_t");
-    const uint8_t combined =
-        (type->untag()->type_state_ << kNullabilityBitSize) |
-        type->untag()->nullability_;
-    ASSERT_EQUAL(type->untag()->type_state_, combined >> kNullabilityBitSize);
-    ASSERT_EQUAL(type->untag()->nullability_, combined & kNullabilityBitMask);
-    s->Write<uint8_t>(combined);
+    ASSERT(Utils::IsUint(8, type->untag()->flags_));
+    s->Write<uint8_t>(type->untag()->flags_);
     s->Write<uint32_t>(type->untag()->packed_parameter_counts_);
     s->Write<uint16_t>(type->untag()->packed_type_parameter_counts_);
   }
@@ -4300,9 +4267,7 @@
       Deserializer::InitializeHeader(
           type, kFunctionTypeCid, FunctionType::InstanceSize(), mark_canonical);
       d.ReadFromTo(type);
-      const uint8_t combined = d.Read<uint8_t>();
-      type->untag()->type_state_ = combined >> kNullabilityBitSize;
-      type->untag()->nullability_ = combined & kNullabilityBitMask;
+      type->untag()->flags_ = d.Read<uint8_t>();
       type->untag()->packed_parameter_counts_ = d.Read<uint32_t>();
       type->untag()->packed_type_parameter_counts_ = d.Read<uint16_t>();
     }
@@ -4386,18 +4351,8 @@
   void WriteRecordType(Serializer* s, RecordTypePtr type) {
     AutoTraceObject(type);
     WriteFromTo(type);
-    ASSERT(type->untag()->type_state_ <
-           (1 << UntaggedRecordType::kTypeStateBitSize));
-    ASSERT(type->untag()->nullability_ < (1 << kNullabilityBitSize));
-    static_assert(UntaggedRecordType::kTypeStateBitSize + kNullabilityBitSize <=
-                      kBitsPerByte * sizeof(uint8_t),
-                  "Cannot pack type_state_ and nullability_ into a uint8_t");
-    const uint8_t combined =
-        (type->untag()->type_state_ << kNullabilityBitSize) |
-        type->untag()->nullability_;
-    ASSERT_EQUAL(type->untag()->type_state_, combined >> kNullabilityBitSize);
-    ASSERT_EQUAL(type->untag()->nullability_, combined & kNullabilityBitMask);
-    s->Write<uint8_t>(combined);
+    ASSERT(Utils::IsUint(8, type->untag()->flags_));
+    s->Write<uint8_t>(type->untag()->flags_);
   }
 };
 #endif  // !DART_PRECOMPILED_RUNTIME
@@ -4425,9 +4380,7 @@
       Deserializer::InitializeHeader(
           type, kRecordTypeCid, RecordType::InstanceSize(), mark_canonical);
       d.ReadFromTo(type);
-      const uint8_t combined = d.Read<uint8_t>();
-      type->untag()->type_state_ = combined >> kNullabilityBitSize;
-      type->untag()->nullability_ = combined & kNullabilityBitMask;
+      type->untag()->flags_ = d.Read<uint8_t>();
     }
   }
 
@@ -4534,16 +4487,20 @@
     }
 
     TypeRef& type_ref = TypeRef::Handle(d->zone());
+    AbstractType& type = AbstractType::Handle(d->zone());
     Code& stub = Code::Handle(d->zone());
+    const bool includes_code = Snapshot::IncludesCode(d->kind());
 
-    if (Snapshot::IncludesCode(d->kind())) {
-      for (intptr_t id = start_index_, n = stop_index_; id < n; id++) {
-        type_ref ^= refs.At(id);
+    for (intptr_t id = start_index_, n = stop_index_; id < n; id++) {
+      type_ref ^= refs.At(id);
+
+      // Refresh finalization state and nullability.
+      type = type_ref.type();
+      type_ref.set_type(type);
+
+      if (includes_code) {
         type_ref.UpdateTypeTestingStubEntryPoint();
-      }
-    } else {
-      for (intptr_t id = start_index_, n = stop_index_; id < n; id++) {
-        type_ref ^= refs.At(id);
+      } else {
         stub = TypeTestingStubGenerator::DefaultCodeForType(type_ref);
         type_ref.InitializeTypeTestingStubNonAtomic(stub);
       }
@@ -4599,16 +4556,8 @@
     s->Write<int32_t>(type->untag()->parameterized_class_id_);
     s->Write<uint8_t>(type->untag()->base_);
     s->Write<uint8_t>(type->untag()->index_);
-    ASSERT(type->untag()->flags_ < (1 << UntaggedTypeParameter::kFlagsBitSize));
-    ASSERT(type->untag()->nullability_ < (1 << kNullabilityBitSize));
-    static_assert(UntaggedTypeParameter::kFlagsBitSize + kNullabilityBitSize <=
-                      kBitsPerByte * sizeof(uint8_t),
-                  "Cannot pack flags_ and nullability_ into a uint8_t");
-    const uint8_t combined = (type->untag()->flags_ << kNullabilityBitSize) |
-                             type->untag()->nullability_;
-    ASSERT_EQUAL(type->untag()->flags_, combined >> kNullabilityBitSize);
-    ASSERT_EQUAL(type->untag()->nullability_, combined & kNullabilityBitMask);
-    s->Write<uint8_t>(combined);
+    ASSERT(Utils::IsUint(8, type->untag()->flags_));
+    s->Write<uint8_t>(type->untag()->flags_);
   }
 };
 #endif  // !DART_PRECOMPILED_RUNTIME
@@ -4641,9 +4590,7 @@
       type->untag()->parameterized_class_id_ = d.Read<int32_t>();
       type->untag()->base_ = d.Read<uint8_t>();
       type->untag()->index_ = d.Read<uint8_t>();
-      const uint8_t combined = d.Read<uint8_t>();
-      type->untag()->flags_ = combined >> kNullabilityBitSize;
-      type->untag()->nullability_ = combined & kNullabilityBitMask;
+      type->untag()->flags_ = d.Read<uint8_t>();
     }
   }
 
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index b5db3e7..c7a1028 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -659,6 +659,11 @@
             AbstractType& unfinalized_type = AbstractType::Handle(zone);
             if (super_type_arg.IsTypeRef()) {
               unfinalized_type = TypeRef::Cast(super_type_arg).type();
+              if (unfinalized_type.IsFinalized()) {
+                super_type_arg.SetIsFinalized();
+                arguments.SetTypeAt(i, super_type_arg);
+                continue;
+              }
             } else {
               ASSERT(super_type_arg.IsType());
               unfinalized_type = super_type_arg.ptr();
@@ -755,10 +760,13 @@
       // is_being_finalized mark bit.
       return type.ptr();
     }
+    type.SetIsBeingFinalized();
     AbstractType& ref_type =
         AbstractType::Handle(zone, TypeRef::Cast(type).type());
     ref_type = FinalizeType(ref_type, finalization, pending_types);
+    ASSERT(ref_type.IsFinalized());
     TypeRef::Cast(type).set_type(ref_type);
+    ASSERT(type.IsFinalized());
     return type.ptr();
   }
 
@@ -1563,7 +1571,7 @@
           Map(param->untag()->parameterized_class_id_);
     } else if (obj->IsType()) {
       TypePtr type = Type::RawCast(obj);
-      type->untag()->type_class_id_ = Map(type->untag()->type_class_id_);
+      type->untag()->set_type_class_id(Map(type->untag()->type_class_id()));
     } else {
       intptr_t old_cid = obj->GetClassId();
       intptr_t new_cid = Map(old_cid);
@@ -1619,7 +1627,7 @@
 // In the Dart VM heap the following instances directly use cids for the
 // computation of canonical hash codes:
 //
-//    * TypePtr (due to UntaggedType::type_class_id_)
+//    * TypePtr (due to UntaggedType::type_class_id)
 //    * TypeParameterPtr (due to UntaggedTypeParameter::parameterized_class_id_)
 //
 // The following instances use cids for the computation of canonical hash codes
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm.cc b/runtime/vm/compiler/asm_intrinsifier_arm.cc
index 7890761..de81be7 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm.cc
@@ -1296,8 +1296,8 @@
 
   // Check nullability.
   __ Bind(&equiv_cids);
-  __ ldrb(R1, FieldAddress(R1, target::Type::nullability_offset()));
-  __ ldrb(R2, FieldAddress(R2, target::Type::nullability_offset()));
+  __ LoadAbstractTypeNullability(R1, R1);
+  __ LoadAbstractTypeNullability(R2, R2);
   __ cmp(R1, Operand(R2));
   __ b(&check_legacy, NE);
   // Fall through to equal case if nullability is strictly equal.
diff --git a/runtime/vm/compiler/asm_intrinsifier_arm64.cc b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
index 0b9255d..ab1c62c 100644
--- a/runtime/vm/compiler/asm_intrinsifier_arm64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_arm64.cc
@@ -1463,10 +1463,8 @@
 
   // Check nullability.
   __ Bind(&equiv_cids);
-  __ ldr(R1, FieldAddress(R1, target::Type::nullability_offset()),
-         kUnsignedByte);
-  __ ldr(R2, FieldAddress(R2, target::Type::nullability_offset()),
-         kUnsignedByte);
+  __ LoadAbstractTypeNullability(R1, R1);
+  __ LoadAbstractTypeNullability(R2, R2);
   __ cmp(R1, Operand(R2));
   __ b(&check_legacy, NE);
   // Fall through to equal case if nullability is strictly equal.
diff --git a/runtime/vm/compiler/asm_intrinsifier_ia32.cc b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
index fa431d9..962fc62 100644
--- a/runtime/vm/compiler/asm_intrinsifier_ia32.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_ia32.cc
@@ -1432,8 +1432,8 @@
 
   // Check nullability.
   __ Bind(&equiv_cids);
-  __ movzxb(EDI, FieldAddress(EDI, target::Type::nullability_offset()));
-  __ movzxb(EBX, FieldAddress(EBX, target::Type::nullability_offset()));
+  __ LoadAbstractTypeNullability(EDI, EDI);
+  __ LoadAbstractTypeNullability(EBX, EBX);
   __ cmpl(EDI, EBX);
   __ j(NOT_EQUAL, &check_legacy, Assembler::kNearJump);
   // Fall through to equal case if nullability is strictly equal.
diff --git a/runtime/vm/compiler/asm_intrinsifier_riscv.cc b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
index e14eb6d..a7a4a7c 100644
--- a/runtime/vm/compiler/asm_intrinsifier_riscv.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_riscv.cc
@@ -1487,8 +1487,8 @@
 
   // Check nullability.
   __ Bind(&equiv_cids);
-  __ lbu(A0, FieldAddress(A0, target::Type::nullability_offset()));
-  __ lbu(A1, FieldAddress(A1, target::Type::nullability_offset()));
+  __ LoadAbstractTypeNullability(A0, A0);
+  __ LoadAbstractTypeNullability(A1, A1);
   __ bne(A0, A1, &check_legacy);
   // Fall through to equal case if nullability is strictly equal.
 
diff --git a/runtime/vm/compiler/asm_intrinsifier_x64.cc b/runtime/vm/compiler/asm_intrinsifier_x64.cc
index 24928d6..4e5953a 100644
--- a/runtime/vm/compiler/asm_intrinsifier_x64.cc
+++ b/runtime/vm/compiler/asm_intrinsifier_x64.cc
@@ -1341,8 +1341,8 @@
 
   // Check nullability.
   __ Bind(&equiv_cids);
-  __ movzxb(RCX, FieldAddress(RCX, target::Type::nullability_offset()));
-  __ movzxb(RDX, FieldAddress(RDX, target::Type::nullability_offset()));
+  __ LoadAbstractTypeNullability(RCX, RCX);
+  __ LoadAbstractTypeNullability(RDX, RDX);
   __ cmpq(RCX, RDX);
   __ j(NOT_EQUAL, &check_legacy, Assembler::kNearJump);
   // Fall through to equal case if nullability is strictly equal.
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index 0101598..326f47c 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -441,17 +441,17 @@
     cmp(value, Operand(TMP));
   }
 
-  void CompareFunctionTypeNullabilityWith(Register type,
-                                          int8_t value) override {
-    EnsureHasClassIdInDEBUG(kFunctionTypeCid, type, TMP);
-    ldrb(TMP, FieldAddress(
-                  type, compiler::target::FunctionType::nullability_offset()));
-    cmp(TMP, Operand(value));
+  void LoadAbstractTypeNullability(Register dst, Register type) override {
+    ldrb(dst,
+         FieldAddress(type, compiler::target::AbstractType::flags_offset()));
+    and_(dst, dst,
+         Operand(compiler::target::UntaggedAbstractType::kNullabilityMask));
   }
-  void CompareTypeNullabilityWith(Register type, int8_t value) override {
-    EnsureHasClassIdInDEBUG(kTypeCid, type, TMP);
-    ldrb(TMP, FieldAddress(type, compiler::target::Type::nullability_offset()));
-    cmp(TMP, Operand(value));
+  void CompareAbstractTypeNullabilityWith(Register type,
+                                          /*Nullability*/ int8_t value,
+                                          Register scratch) override {
+    LoadAbstractTypeNullability(scratch, type);
+    cmp(scratch, Operand(value));
   }
 
   // Misc. functionality
@@ -869,6 +869,13 @@
   void LslImmediate(Register rd, int32_t shift) {
     LslImmediate(rd, rd, shift);
   }
+  void LsrImmediate(Register rd, Register rn, int32_t shift) {
+    ASSERT((shift >= 0) && (shift < kBitsPerInt32));
+    Lsr(rd, rn, Operand(shift));
+  }
+  void LsrImmediate(Register rd, int32_t shift) override {
+    LsrImmediate(rd, rd, shift);
+  }
 
   // Test rn and immediate. May clobber IP.
   void TestImmediate(Register rn, int32_t imm, Condition cond = AL);
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 300071f..494e066 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -648,20 +648,17 @@
     cmp(value, Operand(TMP), sz);
   }
 
-  void CompareFunctionTypeNullabilityWith(Register type,
-                                          int8_t value) override {
-    EnsureHasClassIdInDEBUG(kFunctionTypeCid, type, TMP);
-    ldr(TMP,
-        FieldAddress(type,
-                     compiler::target::FunctionType::nullability_offset()),
+  void LoadAbstractTypeNullability(Register dst, Register type) override {
+    ldr(dst, FieldAddress(type, compiler::target::AbstractType::flags_offset()),
         kUnsignedByte);
-    cmp(TMP, Operand(value));
+    AndImmediate(dst, dst,
+                 compiler::target::UntaggedAbstractType::kNullabilityMask);
   }
-  void CompareTypeNullabilityWith(Register type, int8_t value) override {
-    EnsureHasClassIdInDEBUG(kTypeCid, type, TMP);
-    ldr(TMP, FieldAddress(type, compiler::target::Type::nullability_offset()),
-        kUnsignedByte);
-    cmp(TMP, Operand(value));
+  void CompareAbstractTypeNullabilityWith(Register type,
+                                          /*Nullability*/ int8_t value,
+                                          Register scratch) override {
+    LoadAbstractTypeNullability(scratch, type);
+    cmp(scratch, Operand(value));
   }
 
   bool use_far_branches() const {
@@ -1707,6 +1704,9 @@
     ASSERT((shift >= 0) && (shift < reg_size));
     ubfm(rd, rn, shift, reg_size - 1, sz);
   }
+  void LsrImmediate(Register rd, int32_t shift) override {
+    LsrImmediate(rd, rd, shift);
+  }
   void AsrImmediate(Register rd,
                     Register rn,
                     int shift,
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index 2d26847..dbb00a3 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -782,30 +782,24 @@
                             Register address,
                             int32_t offset = 0) = 0;
 
-  // Retrieves nullability from a FunctionTypePtr in [type] and compares it
-  // to [value].
-  //
-  // TODO(dartbug.com/47034): Change how nullability is stored so that it
-  // can be accessed without checking the class id first.
-  virtual void CompareFunctionTypeNullabilityWith(Register type,
-                                                  int8_t value) = 0;
+  // Loads nullability from an AbstractType [type] to [dst].
+  virtual void LoadAbstractTypeNullability(Register dst, Register type) = 0;
+  // Loads nullability from an AbstractType [type] and compares it
+  // to [value]. Clobbers [scratch].
+  virtual void CompareAbstractTypeNullabilityWith(Register type,
+                                                  /*Nullability*/ int8_t value,
+                                                  Register scratch) = 0;
 
-  // Retrieves nullability from a TypePtr in [type] and compares it to [value].
-  //
-  // TODO(dartbug.com/47034): Change how nullability is stored so that it
-  // can be accessed without checking the class id first.
-  virtual void CompareTypeNullabilityWith(Register type, int8_t value) = 0;
+  virtual void LsrImmediate(Register dst, int32_t shift) = 0;
 
   void LoadTypeClassId(Register dst, Register src) {
 #if !defined(TARGET_ARCH_IA32)
     EnsureHasClassIdInDEBUG(kTypeCid, src, TMP);
 #endif
-    ASSERT(!compiler::target::UntaggedType::kTypeClassIdIsSigned);
-    ASSERT_EQUAL(compiler::target::UntaggedType::kTypeClassIdBitSize,
-                 kBitsPerInt16);
     LoadFieldFromOffset(dst, src,
-                        compiler::target::Type::type_class_id_offset(),
-                        kUnsignedTwoBytes);
+                        compiler::target::AbstractType::flags_offset(),
+                        kUnsignedFourBytes);
+    LsrImmediate(dst, compiler::target::UntaggedType::kTypeClassIdShift);
   }
 
   virtual void EnsureHasClassIdInDEBUG(intptr_t cid,
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index d9ab00b..3ce1e5f 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -766,6 +766,9 @@
   void LslImmediate(Register dst, int32_t shift) {
     shll(dst, Immediate(shift));
   }
+  void LsrImmediate(Register dst, int32_t shift) override {
+    shrl(dst, Immediate(shift));
+  }
 
   void CompareImmediate(Register reg, int32_t immediate) {
     cmpl(reg, Immediate(immediate));
@@ -878,15 +881,17 @@
     cmpxchgl(address, reg);
   }
 
-  void CompareFunctionTypeNullabilityWith(Register type,
-                                          int8_t value) override {
-    cmpb(FieldAddress(type,
-                      compiler::target::FunctionType::nullability_offset()),
-         Immediate(value));
+  void LoadAbstractTypeNullability(Register dst, Register type) override {
+    movzxb(dst,
+           FieldAddress(type, compiler::target::AbstractType::flags_offset()));
+    andl(dst,
+         Immediate(compiler::target::UntaggedAbstractType::kNullabilityMask));
   }
-  void CompareTypeNullabilityWith(Register type, int8_t value) override {
-    cmpb(FieldAddress(type, compiler::target::Type::nullability_offset()),
-         Immediate(value));
+  void CompareAbstractTypeNullabilityWith(Register type,
+                                          /*Nullability*/ int8_t value,
+                                          Register scratch) override {
+    LoadAbstractTypeNullability(scratch, type);
+    cmpl(scratch, Immediate(value));
   }
 
   void EnterFrame(intptr_t frame_space);
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.cc b/runtime/vm/compiler/assembler/assembler_riscv.cc
index 7b4cf3f..11a8c87 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.cc
+++ b/runtime/vm/compiler/assembler/assembler_riscv.cc
@@ -2389,17 +2389,16 @@
   CompareRegisters(value, TMP2);
 }
 
-void Assembler::CompareFunctionTypeNullabilityWith(Register type,
-                                                   int8_t value) {
-  EnsureHasClassIdInDEBUG(kFunctionTypeCid, type, TMP);
-  lbu(TMP,
-      FieldAddress(type, compiler::target::FunctionType::nullability_offset()));
-  CompareImmediate(TMP, value);
+void Assembler::LoadAbstractTypeNullability(Register dst, Register type) {
+  lbu(dst, FieldAddress(type, compiler::target::AbstractType::flags_offset()));
+  andi(dst, dst, compiler::target::UntaggedAbstractType::kNullabilityMask);
 }
-void Assembler::CompareTypeNullabilityWith(Register type, int8_t value) {
-  EnsureHasClassIdInDEBUG(kTypeCid, type, TMP);
-  lbu(TMP, FieldAddress(type, compiler::target::Type::nullability_offset()));
-  CompareImmediate(TMP, value);
+
+void Assembler::CompareAbstractTypeNullabilityWith(Register type,
+                                                   /*Nullability*/ int8_t value,
+                                                   Register scratch) {
+  LoadAbstractTypeNullability(scratch, type);
+  CompareImmediate(scratch, value);
 }
 
 void Assembler::ReserveAlignedFrameSpace(intptr_t frame_space) {
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.h b/runtime/vm/compiler/assembler/assembler_riscv.h
index 4e02001..e5da2e4 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.h
+++ b/runtime/vm/compiler/assembler/assembler_riscv.h
@@ -846,8 +846,10 @@
 
   void CompareWithMemoryValue(Register value, Address address);
 
-  void CompareFunctionTypeNullabilityWith(Register type, int8_t value) override;
-  void CompareTypeNullabilityWith(Register type, int8_t value) override;
+  void LoadAbstractTypeNullability(Register dst, Register type) override;
+  void CompareAbstractTypeNullabilityWith(Register type,
+                                          /*Nullability*/ int8_t value,
+                                          Register scratch) override;
 
   // Debugging and bringup support.
   void Breakpoint() override { trap(); }
@@ -986,6 +988,9 @@
   void LslImmediate(Register rd, int32_t shift) {
     slli(rd, rd, shift);
   }
+  void LsrImmediate(Register rd, int32_t shift) override {
+    srli(rd, rd, shift);
+  }
   void TestImmediate(Register rn, intx_t imm, OperandSize sz = kWordBytes);
   void CompareImmediate(Register rn, intx_t imm, OperandSize sz = kWordBytes);
 
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index 1fd2fee..0d7e0fb 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -594,6 +594,9 @@
   void LslImmediate(Register dst, int32_t shift) {
     shlq(dst, Immediate(shift));
   }
+  void LsrImmediate(Register dst, int32_t shift) override {
+    shrq(dst, Immediate(shift));
+  }
 
   void shldq(Register dst, Register src, Register shifter) {
     ASSERT(shifter == RCX);
@@ -1219,17 +1222,17 @@
     OBJ(cmp)(value, FieldAddress(base, offset));
   }
 
-  void CompareFunctionTypeNullabilityWith(Register type,
-                                          int8_t value) override {
-    EnsureHasClassIdInDEBUG(kFunctionTypeCid, type, TMP);
-    cmpb(FieldAddress(type,
-                      compiler::target::FunctionType::nullability_offset()),
-         Immediate(value));
+  void LoadAbstractTypeNullability(Register dst, Register type) override {
+    movzxb(dst,
+           FieldAddress(type, compiler::target::AbstractType::flags_offset()));
+    andl(dst,
+         Immediate(compiler::target::UntaggedAbstractType::kNullabilityMask));
   }
-  void CompareTypeNullabilityWith(Register type, int8_t value) override {
-    EnsureHasClassIdInDEBUG(kTypeCid, type, TMP);
-    cmpb(FieldAddress(type, compiler::target::Type::nullability_offset()),
-         Immediate(value));
+  void CompareAbstractTypeNullabilityWith(Register type,
+                                          /*Nullability*/ int8_t value,
+                                          Register scratch) override {
+    LoadAbstractTypeNullability(scratch, type);
+    cmpl(scratch, Immediate(value));
   }
 
   void RestoreCodePointer();
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 9cf7404..61d395b 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -183,8 +183,7 @@
   V(FunctionType, UntaggedFunctionType, packed_type_parameter_counts, Uint16,  \
     FINAL)                                                                     \
   V(PointerBase, UntaggedPointerBase, data, IntPtr, VAR)                       \
-  V(Record, UntaggedRecord, num_fields, Int32, FINAL)                          \
-  V(TypeParameter, UntaggedTypeParameter, flags, Uint8, FINAL)
+  V(Record, UntaggedRecord, num_fields, Int32, FINAL)
 
 // For uses that do not need the exact_type (boxed) or representation (unboxed)
 // or whether a boxed native slot is nullable. (Generally, such users only need
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index d0cf786..5e72ade 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -391,12 +391,15 @@
 
 const word UntaggedAbstractType::kTypeStateFinalizedInstantiated =
     dart::UntaggedAbstractType::kFinalizedInstantiated;
+const word UntaggedAbstractType::kTypeStateShift =
+    dart::UntaggedAbstractType::kTypeStateShift;
+const word UntaggedAbstractType::kTypeStateBits =
+    dart::UntaggedAbstractType::kTypeStateBits;
+const word UntaggedAbstractType::kNullabilityMask =
+    dart::UntaggedAbstractType::kNullabilityMask;
 
-const bool UntaggedType::kTypeClassIdIsSigned =
-    std::is_signed<decltype(dart::UntaggedType::type_class_id_)>::value;
-
-const word UntaggedType::kTypeClassIdBitSize =
-    sizeof(dart::UntaggedType::type_class_id_) * kBitsPerByte;
+const word UntaggedType::kTypeClassIdShift =
+    dart::UntaggedType::kTypeClassIdShift;
 
 const word UntaggedObject::kBarrierOverlapShift =
     dart::UntaggedObject::kBarrierOverlapShift;
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 38fe9a6..86be807 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -432,12 +432,14 @@
 class UntaggedAbstractType : public AllStatic {
  public:
   static const word kTypeStateFinalizedInstantiated;
+  static const word kTypeStateShift;
+  static const word kTypeStateBits;
+  static const word kNullabilityMask;
 };
 
 class UntaggedType : public AllStatic {
  public:
-  static const bool kTypeClassIdIsSigned;
-  static const word kTypeClassIdBitSize;
+  static const word kTypeClassIdShift;
 };
 
 class Object : public AllStatic {
@@ -695,6 +697,7 @@
 
 class AbstractType : public AllStatic {
  public:
+  static word flags_offset();
   static word type_test_stub_entry_point_offset();
   static word InstanceSize();
   FINAL_CLASS();
@@ -703,10 +706,7 @@
 class Type : public AllStatic {
  public:
   static word hash_offset();
-  static word type_state_offset();
   static word arguments_offset();
-  static word type_class_id_offset();
-  static word nullability_offset();
   static word InstanceSize();
   FINAL_CLASS();
 };
@@ -714,13 +714,11 @@
 class FunctionType : public AllStatic {
  public:
   static word hash_offset();
-  static word type_state_offset();
   static word packed_parameter_counts_offset();
   static word packed_type_parameter_counts_offset();
   static word named_parameter_names_offset();
   static word parameter_types_offset();
   static word type_parameters_offset();
-  static word nullability_offset();
   static word InstanceSize();
   FINAL_CLASS();
 };
@@ -966,12 +964,10 @@
 class TypeParameter : public AllStatic {
  public:
   static word bound_offset();
-  static word flags_offset();
   static word InstanceSize();
   FINAL_CLASS();
   static word parameterized_class_id_offset();
   static word index_offset();
-  static word nullability_offset();
 };
 
 class LibraryPrefix : public AllStatic {
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 5fccbc4..8100475 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -96,6 +96,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -502,11 +503,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -527,24 +525,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -556,9 +550,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -584,7 +577,7 @@
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
         788, 792, 796, 800, 804, -1, 808, -1, 812, 816, -1, -1, -1, -1, -1, -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -615,7 +608,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -667,7 +660,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -764,6 +757,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -1176,11 +1170,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -1201,24 +1192,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -1230,9 +1217,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -1259,7 +1245,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         1552, 1560, 1568, 1576, -1,   -1,   1584, 1592,
         1600, 1608, 1616, -1,   1624, 1632, -1,   -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -1290,7 +1276,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -1341,9 +1327,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -1437,6 +1423,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -1843,11 +1830,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -1868,24 +1852,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -1897,9 +1877,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -1922,7 +1901,7 @@
     WeakReference_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word Code_entry_point_offset[] = {
     4, 12, 8, 16};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -1953,7 +1932,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -2005,7 +1984,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -2102,6 +2081,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -2514,11 +2494,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -2539,24 +2516,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -2568,9 +2541,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -2598,7 +2570,7 @@
         1552, 1560, 1568, 1576, 1584, 1592, 1600, 1608, 1616, 1624, 1632,
         1640, 1648, 1656, 1664, -1,   -1,   -1,   -1,   1672, 1680, -1,
         -1,   1688, 1696, 1704, -1,   -1,   -1,   -1,   -1,   -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -2629,7 +2601,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -2680,9 +2652,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -2776,6 +2748,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -3190,9 +3163,6 @@
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
 static constexpr dart::compiler::target::word Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word Type_hash_offset = 28;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 32;
-static constexpr dart::compiler::target::word Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     36;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 32;
@@ -3216,8 +3186,6 @@
 static constexpr dart::compiler::target::word FunctionType_hash_offset = 40;
 static constexpr dart::compiler::target::word
     FunctionType_named_parameter_names_offset = 36;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    51;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
@@ -3229,8 +3197,6 @@
 static constexpr dart::compiler::target::word
     TypeParameter_parameterized_class_id_offset = 32;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 35;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    37;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 12;
@@ -3243,7 +3209,6 @@
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     20;
 static constexpr dart::compiler::target::word TypeParameter_bound_offset = 28;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 36;
 static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 20;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
@@ -3352,7 +3317,7 @@
 static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
@@ -3449,6 +3414,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -3863,9 +3829,6 @@
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
 static constexpr dart::compiler::target::word Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word Type_hash_offset = 28;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 32;
-static constexpr dart::compiler::target::word Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     36;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 32;
@@ -3889,8 +3852,6 @@
 static constexpr dart::compiler::target::word FunctionType_hash_offset = 40;
 static constexpr dart::compiler::target::word
     FunctionType_named_parameter_names_offset = 36;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    51;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
@@ -3902,8 +3863,6 @@
 static constexpr dart::compiler::target::word
     TypeParameter_parameterized_class_id_offset = 32;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 35;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    37;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 12;
@@ -3916,7 +3875,6 @@
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     20;
 static constexpr dart::compiler::target::word TypeParameter_bound_offset = 28;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 36;
 static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 20;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
@@ -4026,7 +3984,7 @@
 static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
@@ -4123,6 +4081,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -4529,11 +4488,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -4554,24 +4510,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -4583,9 +4535,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -4613,7 +4564,7 @@
         -1,  -1,  -1, -1, -1, 788, 792, 796, -1,  -1,  800,
         804, 808, -1, -1, -1, 812, 816, 820, 824, 828, 832,
         836, 840, -1, -1, -1, -1,  844, 848, 852, 856};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -4644,7 +4595,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -4696,7 +4647,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -4793,6 +4744,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -5205,11 +5157,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -5230,24 +5179,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -5259,9 +5204,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -5289,7 +5233,7 @@
         -1,   -1,   -1, -1, -1, 1552, 1560, 1568, -1,   -1,   1576,
         1584, 1592, -1, -1, -1, 1600, 1608, 1616, 1624, 1632, 1640,
         1648, 1656, -1, -1, -1, -1,   1664, 1672, 1680, 1688};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -5320,7 +5264,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -5371,9 +5315,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -5466,6 +5410,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -5867,11 +5812,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -5892,24 +5834,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -5921,9 +5859,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -5949,7 +5886,7 @@
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
         788, 792, 796, 800, 804, -1, 808, -1, 812, 816, -1, -1, -1, -1, -1, -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -5980,7 +5917,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -6032,7 +5969,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -6126,6 +6063,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -6533,11 +6471,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -6558,24 +6493,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -6587,9 +6518,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -6616,7 +6546,7 @@
     Thread_write_barrier_wrappers_thread_offset[] = {
         1552, 1560, 1568, 1576, -1,   -1,   1584, 1592,
         1600, 1608, 1616, -1,   1624, 1632, -1,   -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -6647,7 +6577,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -6698,9 +6628,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -6791,6 +6721,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -7192,11 +7123,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -7217,24 +7145,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -7246,9 +7170,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -7271,7 +7194,7 @@
     WeakReference_type_arguments_offset = 8;
 static constexpr dart::compiler::target::word Code_entry_point_offset[] = {
     4, 12, 8, 16};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -7302,7 +7225,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -7354,7 +7277,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -7448,6 +7371,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -7855,11 +7779,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -7880,24 +7801,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -7909,9 +7826,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -7939,7 +7855,7 @@
         1552, 1560, 1568, 1576, 1584, 1592, 1600, 1608, 1616, 1624, 1632,
         1640, 1648, 1656, 1664, -1,   -1,   -1,   -1,   1672, 1680, -1,
         -1,   1688, 1696, 1704, -1,   -1,   -1,   -1,   -1,   -1};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -7970,7 +7886,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -8021,9 +7937,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -8114,6 +8030,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -8523,9 +8440,6 @@
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
 static constexpr dart::compiler::target::word Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word Type_hash_offset = 28;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 32;
-static constexpr dart::compiler::target::word Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     36;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 32;
@@ -8549,8 +8463,6 @@
 static constexpr dart::compiler::target::word FunctionType_hash_offset = 40;
 static constexpr dart::compiler::target::word
     FunctionType_named_parameter_names_offset = 36;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    51;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
@@ -8562,8 +8474,6 @@
 static constexpr dart::compiler::target::word
     TypeParameter_parameterized_class_id_offset = 32;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 35;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    37;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 12;
@@ -8576,7 +8486,6 @@
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     20;
 static constexpr dart::compiler::target::word TypeParameter_bound_offset = 28;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 36;
 static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 20;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
@@ -8685,7 +8594,7 @@
 static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
@@ -8779,6 +8688,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -9188,9 +9098,6 @@
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
 static constexpr dart::compiler::target::word Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word Type_hash_offset = 28;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 32;
-static constexpr dart::compiler::target::word Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     36;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 32;
@@ -9214,8 +9121,6 @@
 static constexpr dart::compiler::target::word FunctionType_hash_offset = 40;
 static constexpr dart::compiler::target::word
     FunctionType_named_parameter_names_offset = 36;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    51;
 static constexpr dart::compiler::target::word
     FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
@@ -9227,8 +9132,6 @@
 static constexpr dart::compiler::target::word
     TypeParameter_parameterized_class_id_offset = 32;
 static constexpr dart::compiler::target::word TypeParameter_index_offset = 35;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    37;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 12;
@@ -9241,7 +9144,6 @@
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     20;
 static constexpr dart::compiler::target::word TypeParameter_bound_offset = 28;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 36;
 static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 20;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
@@ -9351,7 +9253,7 @@
 static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
@@ -9445,6 +9347,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -9846,11 +9749,8 @@
     16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
-static constexpr dart::compiler::target::word Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word Type_hash_offset = 16;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 20;
-static constexpr dart::compiler::target::word Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word Type_hash_offset = 20;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     24;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 20;
@@ -9871,24 +9771,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 4;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     20;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 24;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    39;
+    FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 32;
+    FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 36;
+    FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 20;
+    FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 12;
+    FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 20;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 23;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    25;
+    TypeParameter_parameterized_class_id_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 27;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 8;
@@ -9900,9 +9796,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 12;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     16;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 16;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 24;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 12;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 20;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 8;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     12;
@@ -9930,7 +9825,7 @@
         -1,  -1,  -1, -1, -1, 788, 792, 796, -1,  -1,  800,
         804, 808, -1, -1, -1, 812, 816, 820, 824, 828, 832,
         836, 840, -1, -1, -1, -1,  844, 848, 852, 856};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 16;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 8;
@@ -9961,7 +9856,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 88;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 40;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 44;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     16;
@@ -10013,7 +9908,7 @@
 static constexpr dart::compiler::target::word Type_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 28;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 20;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 12;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 20;
@@ -10107,6 +10002,7 @@
 static constexpr dart::compiler::target::word SubtypeTestCache_kTestResult = 0;
 static constexpr dart::compiler::target::word TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AbstractType_flags_offset = 16;
 static constexpr dart::compiler::target::word
     AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word ArgumentsDescriptor_count_offset =
@@ -10514,11 +10410,8 @@
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
-static constexpr dart::compiler::target::word Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word Type_hash_offset = 32;
-static constexpr dart::compiler::target::word Type_type_class_id_offset = 40;
-static constexpr dart::compiler::target::word Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word Type_hash_offset = 40;
 static constexpr dart::compiler::target::word Finalizer_type_arguments_offset =
     48;
 static constexpr dart::compiler::target::word Finalizer_callback_offset = 40;
@@ -10539,24 +10432,20 @@
 static constexpr dart::compiler::target::word FinalizerEntry_value_offset = 8;
 static constexpr dart::compiler::target::word NativeFinalizer_callback_offset =
     40;
-static constexpr dart::compiler::target::word FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    FunctionType_named_parameter_names_offset = 48;
-static constexpr dart::compiler::target::word FunctionType_nullability_offset =
-    71;
+    FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_parameter_counts_offset = 64;
+    FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    FunctionType_packed_type_parameter_counts_offset = 68;
+    FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    FunctionType_parameter_types_offset = 40;
+    FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    FunctionType_type_parameters_offset = 24;
+    FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    TypeParameter_parameterized_class_id_offset = 40;
-static constexpr dart::compiler::target::word TypeParameter_index_offset = 43;
-static constexpr dart::compiler::target::word TypeParameter_nullability_offset =
-    45;
+    TypeParameter_parameterized_class_id_offset = 48;
+static constexpr dart::compiler::target::word TypeParameter_index_offset = 51;
 static constexpr dart::compiler::target::word
     TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word TypeArguments_length_offset = 16;
@@ -10568,9 +10457,8 @@
 static constexpr dart::compiler::target::word TypeParameters_bounds_offset = 24;
 static constexpr dart::compiler::target::word TypeParameters_defaults_offset =
     32;
-static constexpr dart::compiler::target::word TypeParameter_bound_offset = 32;
-static constexpr dart::compiler::target::word TypeParameter_flags_offset = 44;
-static constexpr dart::compiler::target::word TypeRef_type_offset = 24;
+static constexpr dart::compiler::target::word TypeParameter_bound_offset = 40;
+static constexpr dart::compiler::target::word TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word TypedDataBase_length_offset = 16;
 static constexpr dart::compiler::target::word TypedDataView_typed_data_offset =
     24;
@@ -10598,7 +10486,7 @@
         -1,   -1,   -1, -1, -1, 1552, 1560, 1568, -1,   -1,   1576,
         1584, 1592, -1, -1, -1, 1600, 1608, 1616, 1624, 1632, 1640,
         1648, 1656, -1, -1, -1, -1,   1664, 1672, 1680, 1688};
-static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
+static constexpr dart::compiler::target::word AbstractType_InstanceSize = 32;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
 static constexpr dart::compiler::target::word Bool_InstanceSize = 16;
@@ -10629,7 +10517,7 @@
 static constexpr dart::compiler::target::word Float32x4_InstanceSize = 24;
 static constexpr dart::compiler::target::word Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word Function_InstanceSize = 128;
-static constexpr dart::compiler::target::word FunctionType_InstanceSize = 72;
+static constexpr dart::compiler::target::word FunctionType_InstanceSize = 80;
 static constexpr dart::compiler::target::word FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word GrowableObjectArray_InstanceSize =
     32;
@@ -10680,9 +10568,9 @@
 static constexpr dart::compiler::target::word
     TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word Type_InstanceSize = 48;
-static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 48;
+static constexpr dart::compiler::target::word TypeParameter_InstanceSize = 56;
 static constexpr dart::compiler::target::word TypeParameters_InstanceSize = 40;
-static constexpr dart::compiler::target::word TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word TypedDataBase_InstanceSize = 24;
 static constexpr dart::compiler::target::word TypedDataView_InstanceSize = 40;
@@ -10785,6 +10673,7 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word
@@ -11229,12 +11118,8 @@
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     12;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 16;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    20;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -11261,25 +11146,21 @@
     4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 20;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 24;
+    AOT_FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 39;
+    AOT_FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 32;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 36;
+    AOT_FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 20;
+    AOT_FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 12;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 20;
+    AOT_TypeParameter_parameterized_class_id_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    23;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 25;
+    27;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -11297,10 +11178,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    16;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    24;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 12;
+    20;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     8;
 static constexpr dart::compiler::target::word
@@ -11329,7 +11208,7 @@
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
         788, 792, 796, 800, 804, -1, 808, -1, 812, 816, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    12;
+    16;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 8;
@@ -11364,7 +11243,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 44;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    40;
+    44;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 16;
@@ -11424,7 +11303,7 @@
     28;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     12;
@@ -11529,6 +11408,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -11975,12 +11856,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -12007,25 +11884,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -12043,10 +11916,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -12077,7 +11948,7 @@
         1552, 1560, 1568, 1576, -1,   -1,   1584, 1592,
         1600, 1608, 1616, -1,   1624, 1632, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -12112,7 +11983,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -12169,10 +12040,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
@@ -12280,6 +12151,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -12726,12 +12599,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -12758,25 +12627,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -12794,10 +12659,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -12829,7 +12692,7 @@
         1640, 1648, 1656, 1664, -1,   -1,   -1,   -1,   1672, 1680, -1,
         -1,   1688, 1696, 1704, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -12864,7 +12727,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -12921,10 +12784,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
@@ -13028,6 +12891,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -13476,10 +13341,6 @@
     16;
 static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Type_hash_offset = 28;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 36;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -13510,8 +13371,6 @@
 static constexpr dart::compiler::target::word
     AOT_FunctionType_named_parameter_names_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 51;
-static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 48;
@@ -13524,8 +13383,6 @@
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     35;
 static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 37;
-static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
     12;
@@ -13543,8 +13400,6 @@
     AOT_TypeParameters_defaults_offset = 20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
     28;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    36;
 static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     20;
@@ -13666,7 +13521,7 @@
 static constexpr dart::compiler::target::word AOT_LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     AOT_TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
     40;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
@@ -13775,6 +13630,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -14223,10 +14080,6 @@
     16;
 static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Type_hash_offset = 28;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 36;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -14257,8 +14110,6 @@
 static constexpr dart::compiler::target::word
     AOT_FunctionType_named_parameter_names_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 51;
-static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 48;
@@ -14271,8 +14122,6 @@
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     35;
 static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 37;
-static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
     12;
@@ -14290,8 +14139,6 @@
     AOT_TypeParameters_defaults_offset = 20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
     28;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    36;
 static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     20;
@@ -14414,7 +14261,7 @@
 static constexpr dart::compiler::target::word AOT_LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     AOT_TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
     40;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
@@ -14523,6 +14370,7 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word
@@ -14967,12 +14815,8 @@
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     12;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 16;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    20;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -14999,25 +14843,21 @@
     4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 20;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 24;
+    AOT_FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 39;
+    AOT_FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 32;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 36;
+    AOT_FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 20;
+    AOT_FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 12;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 20;
+    AOT_TypeParameter_parameterized_class_id_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    23;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 25;
+    27;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -15035,10 +14875,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    16;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    24;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 12;
+    20;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     8;
 static constexpr dart::compiler::target::word
@@ -15069,7 +14907,7 @@
         804, 808, -1, -1, -1, 812, 816, 820, 824, 828, 832,
         836, 840, -1, -1, -1, -1,  844, 848, 852, 856};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    12;
+    16;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 8;
@@ -15104,7 +14942,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 44;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    40;
+    44;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 16;
@@ -15164,7 +15002,7 @@
     28;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     12;
@@ -15269,6 +15107,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -15715,12 +15555,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -15747,25 +15583,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -15783,10 +15615,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -15818,7 +15648,7 @@
         1584, 1592, -1, -1, -1, 1600, 1608, 1616, 1624, 1632, 1640,
         1648, 1656, -1, -1, -1, -1,   1664, 1672, 1680, 1688};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -15853,7 +15683,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -15910,10 +15740,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
@@ -16016,6 +15846,7 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word
@@ -16454,12 +16285,8 @@
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     12;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 16;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    20;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -16486,25 +16313,21 @@
     4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 20;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 24;
+    AOT_FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 39;
+    AOT_FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 32;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 36;
+    AOT_FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 20;
+    AOT_FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 12;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 20;
+    AOT_TypeParameter_parameterized_class_id_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    23;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 25;
+    27;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -16522,10 +16345,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    16;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    24;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 12;
+    20;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     8;
 static constexpr dart::compiler::target::word
@@ -16554,7 +16375,7 @@
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
         788, 792, 796, 800, 804, -1, 808, -1, 812, 816, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    12;
+    16;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 8;
@@ -16589,7 +16410,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    40;
+    44;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 16;
@@ -16649,7 +16470,7 @@
     28;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     12;
@@ -16751,6 +16572,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -17191,12 +17014,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -17223,25 +17042,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -17259,10 +17074,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -17293,7 +17106,7 @@
         1552, 1560, 1568, 1576, -1,   -1,   1584, 1592,
         1600, 1608, 1616, -1,   1624, 1632, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -17328,7 +17141,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -17385,10 +17198,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
@@ -17493,6 +17306,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -17933,12 +17748,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -17965,25 +17776,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -18001,10 +17808,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -18036,7 +17841,7 @@
         1640, 1648, 1656, 1664, -1,   -1,   -1,   -1,   1672, 1680, -1,
         -1,   1688, 1696, 1704, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -18071,7 +17876,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -18128,10 +17933,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
@@ -18232,6 +18037,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -18674,10 +18481,6 @@
     16;
 static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Type_hash_offset = 28;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 36;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -18708,8 +18511,6 @@
 static constexpr dart::compiler::target::word
     AOT_FunctionType_named_parameter_names_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 51;
-static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 48;
@@ -18722,8 +18523,6 @@
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     35;
 static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 37;
-static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
     12;
@@ -18741,8 +18540,6 @@
     AOT_TypeParameters_defaults_offset = 20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
     28;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    36;
 static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     20;
@@ -18864,7 +18661,7 @@
 static constexpr dart::compiler::target::word AOT_LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     AOT_TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
     40;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
@@ -18970,6 +18767,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -19412,10 +19211,6 @@
     16;
 static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Type_hash_offset = 28;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 34;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 35;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 36;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -19446,8 +19241,6 @@
 static constexpr dart::compiler::target::word
     AOT_FunctionType_named_parameter_names_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 51;
-static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_parameter_counts_offset = 44;
 static constexpr dart::compiler::target::word
     AOT_FunctionType_packed_type_parameter_counts_offset = 48;
@@ -19460,8 +19253,6 @@
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
     35;
 static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 37;
-static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
     12;
@@ -19479,8 +19270,6 @@
     AOT_TypeParameters_defaults_offset = 20;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
     28;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    36;
 static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     20;
@@ -19603,7 +19392,7 @@
 static constexpr dart::compiler::target::word AOT_LoadingUnit_InstanceSize = 24;
 static constexpr dart::compiler::target::word
     AOT_TransferableTypedData_InstanceSize = 8;
-static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 40;
+static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
     40;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
@@ -19709,6 +19498,7 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     268435455;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset = 8;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 4;
 static constexpr dart::compiler::target::word
@@ -20147,12 +19937,8 @@
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     12;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 12;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 16;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    20;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 22;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 23;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 16;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 20;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 24;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -20179,25 +19965,21 @@
     4;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 20;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 28;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 24;
+    AOT_FunctionType_named_parameter_names_offset = 28;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 39;
+    AOT_FunctionType_packed_parameter_counts_offset = 36;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 32;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 40;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 36;
+    AOT_FunctionType_parameter_types_offset = 24;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 20;
+    AOT_FunctionType_type_parameters_offset = 16;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 12;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 20;
+    AOT_TypeParameter_parameterized_class_id_offset = 24;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    23;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 25;
+    27;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 4;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -20215,10 +19997,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    16;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    24;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 12;
+    20;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 16;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     8;
 static constexpr dart::compiler::target::word
@@ -20249,7 +20029,7 @@
         804, 808, -1, -1, -1, 812, 816, 820, 824, 828, 832,
         836, 840, -1, -1, -1, -1,  844, 848, 852, 856};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    12;
+    16;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 12;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 8;
@@ -20284,7 +20064,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    40;
+    44;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 8;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 16;
@@ -20344,7 +20124,7 @@
     28;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     20;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 16;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 20;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 12;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     12;
@@ -20446,6 +20226,8 @@
     0;
 static constexpr dart::compiler::target::word AOT_TypeArguments_kMaxElements =
     576460752303423487;
+static constexpr dart::compiler::target::word AOT_AbstractType_flags_offset =
+    16;
 static constexpr dart::compiler::target::word
     AOT_AbstractType_type_test_stub_entry_point_offset = 8;
 static constexpr dart::compiler::target::word
@@ -20886,12 +20668,8 @@
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
     16;
-static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 24;
-static constexpr dart::compiler::target::word AOT_Type_hash_offset = 32;
-static constexpr dart::compiler::target::word AOT_Type_type_class_id_offset =
-    40;
-static constexpr dart::compiler::target::word AOT_Type_type_state_offset = 42;
-static constexpr dart::compiler::target::word AOT_Type_nullability_offset = 43;
+static constexpr dart::compiler::target::word AOT_Type_arguments_offset = 32;
+static constexpr dart::compiler::target::word AOT_Type_hash_offset = 40;
 static constexpr dart::compiler::target::word
     AOT_Finalizer_type_arguments_offset = 48;
 static constexpr dart::compiler::target::word AOT_Finalizer_callback_offset =
@@ -20918,25 +20696,21 @@
     8;
 static constexpr dart::compiler::target::word
     AOT_NativeFinalizer_callback_offset = 40;
-static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 56;
+static constexpr dart::compiler::target::word AOT_FunctionType_hash_offset = 64;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_named_parameter_names_offset = 48;
+    AOT_FunctionType_named_parameter_names_offset = 56;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_nullability_offset = 71;
+    AOT_FunctionType_packed_parameter_counts_offset = 72;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_parameter_counts_offset = 64;
+    AOT_FunctionType_packed_type_parameter_counts_offset = 76;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_packed_type_parameter_counts_offset = 68;
+    AOT_FunctionType_parameter_types_offset = 48;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_parameter_types_offset = 40;
+    AOT_FunctionType_type_parameters_offset = 32;
 static constexpr dart::compiler::target::word
-    AOT_FunctionType_type_parameters_offset = 24;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_parameterized_class_id_offset = 40;
+    AOT_TypeParameter_parameterized_class_id_offset = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_index_offset =
-    43;
-static constexpr dart::compiler::target::word
-    AOT_TypeParameter_nullability_offset = 45;
+    51;
 static constexpr dart::compiler::target::word
     AOT_TypeArguments_instantiations_offset = 8;
 static constexpr dart::compiler::target::word AOT_TypeArguments_length_offset =
@@ -20954,10 +20728,8 @@
 static constexpr dart::compiler::target::word
     AOT_TypeParameters_defaults_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypeParameter_bound_offset =
-    32;
-static constexpr dart::compiler::target::word AOT_TypeParameter_flags_offset =
-    44;
-static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 24;
+    40;
+static constexpr dart::compiler::target::word AOT_TypeRef_type_offset = 32;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_length_offset =
     16;
 static constexpr dart::compiler::target::word
@@ -20989,7 +20761,7 @@
         1584, 1592, -1, -1, -1, 1600, 1608, 1616, 1624, 1632, 1640,
         1648, 1656, -1, -1, -1, -1,   1664, 1672, 1680, 1688};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
-    24;
+    32;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word AOT_Array_header_size = 24;
 static constexpr dart::compiler::target::word AOT_Bool_InstanceSize = 16;
@@ -21024,7 +20796,7 @@
 static constexpr dart::compiler::target::word AOT_Float64x2_InstanceSize = 24;
 static constexpr dart::compiler::target::word AOT_Function_InstanceSize = 80;
 static constexpr dart::compiler::target::word AOT_FunctionType_InstanceSize =
-    72;
+    80;
 static constexpr dart::compiler::target::word AOT_FutureOr_InstanceSize = 16;
 static constexpr dart::compiler::target::word
     AOT_GrowableObjectArray_InstanceSize = 32;
@@ -21081,10 +20853,10 @@
     AOT_TransferableTypedData_InstanceSize = 8;
 static constexpr dart::compiler::target::word AOT_Type_InstanceSize = 48;
 static constexpr dart::compiler::target::word AOT_TypeParameter_InstanceSize =
-    48;
+    56;
 static constexpr dart::compiler::target::word AOT_TypeParameters_InstanceSize =
     40;
-static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 32;
+static constexpr dart::compiler::target::word AOT_TypeRef_InstanceSize = 40;
 static constexpr dart::compiler::target::word AOT_TypedData_HeaderSize = 24;
 static constexpr dart::compiler::target::word AOT_TypedDataBase_InstanceSize =
     24;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index a584051..4ed9792 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -88,6 +88,7 @@
   CONSTANT(SubtypeTestCache, kTestEntryLength)                                 \
   CONSTANT(SubtypeTestCache, kTestResult)                                      \
   CONSTANT(TypeArguments, kMaxElements)                                        \
+  FIELD(AbstractType, flags_offset)                                            \
   FIELD(AbstractType, type_test_stub_entry_point_offset)                       \
   FIELD(ArgumentsDescriptor, count_offset)                                     \
   FIELD(ArgumentsDescriptor, size_offset)                                      \
@@ -336,9 +337,6 @@
   FIELD(TwoByteString, data_offset)                                            \
   FIELD(Type, arguments_offset)                                                \
   FIELD(Type, hash_offset)                                                     \
-  FIELD(Type, type_class_id_offset)                                            \
-  FIELD(Type, type_state_offset)                                               \
-  FIELD(Type, nullability_offset)                                              \
   FIELD(Finalizer, type_arguments_offset)                                      \
   FIELD(Finalizer, callback_offset)                                            \
   FIELD(FinalizerBase, all_entries_offset)                                     \
@@ -354,14 +352,12 @@
   FIELD(NativeFinalizer, callback_offset)                                      \
   FIELD(FunctionType, hash_offset)                                             \
   FIELD(FunctionType, named_parameter_names_offset)                            \
-  FIELD(FunctionType, nullability_offset)                                      \
   FIELD(FunctionType, packed_parameter_counts_offset)                          \
   FIELD(FunctionType, packed_type_parameter_counts_offset)                     \
   FIELD(FunctionType, parameter_types_offset)                                  \
   FIELD(FunctionType, type_parameters_offset)                                  \
   FIELD(TypeParameter, parameterized_class_id_offset)                          \
   FIELD(TypeParameter, index_offset)                                           \
-  FIELD(TypeParameter, nullability_offset)                                     \
   FIELD(TypeArguments, instantiations_offset)                                  \
   FIELD(TypeArguments, length_offset)                                          \
   FIELD(TypeArguments, nullability_offset)                                     \
@@ -371,7 +367,6 @@
   FIELD(TypeParameters, bounds_offset)                                         \
   FIELD(TypeParameters, defaults_offset)                                       \
   FIELD(TypeParameter, bound_offset)                                           \
-  FIELD(TypeParameter, flags_offset)                                           \
   FIELD(TypeRef, type_offset)                                                  \
   FIELD(TypedDataBase, length_offset)                                          \
   FIELD(TypedDataView, typed_data_offset)                                      \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index ed09681..992bd37 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -312,50 +312,27 @@
   __ LoadClassId(InstantiateTypeABI::kScratchReg,
                  InstantiateTypeABI::kResultTypeReg);
 
-  // The loaded value from the TAV can be [Type], [FunctionType] or [TypeRef].
+  // Handle/unwrap TypeRefs in runtime.
+  __ CompareImmediate(InstantiateTypeABI::kScratchReg, kTypeRefCid);
+  __ BranchIf(EQUAL, &runtime_call);
 
-  // Handle [Type]s.
-  __ CompareImmediate(InstantiateTypeABI::kScratchReg, kTypeCid);
-  __ BranchIf(NOT_EQUAL, &type_parameter_value_is_not_type);
   switch (nullability) {
     case Nullability::kNonNullable:
       __ Ret();
       break;
     case Nullability::kNullable:
-      __ CompareTypeNullabilityWith(
+      __ CompareAbstractTypeNullabilityWith(
           InstantiateTypeABI::kResultTypeReg,
-          static_cast<int8_t>(Nullability::kNullable));
+          static_cast<int8_t>(Nullability::kNullable),
+          InstantiateTypeABI::kScratchReg);
       __ BranchIf(NOT_EQUAL, &runtime_call);
       __ Ret();
       break;
     case Nullability::kLegacy:
-      __ CompareTypeNullabilityWith(
+      __ CompareAbstractTypeNullabilityWith(
           InstantiateTypeABI::kResultTypeReg,
-          static_cast<int8_t>(Nullability::kNonNullable));
-      __ BranchIf(EQUAL, &runtime_call);
-      __ Ret();
-  }
-
-  // TODO(dartbug.com/49719)
-  // Handle [FunctionType]s.
-  __ Bind(&type_parameter_value_is_not_type);
-  __ CompareImmediate(InstantiateTypeABI::kScratchReg, kFunctionTypeCid);
-  __ BranchIf(NOT_EQUAL, &runtime_call);
-  switch (nullability) {
-    case Nullability::kNonNullable:
-      __ Ret();
-      break;
-    case Nullability::kNullable:
-      __ CompareFunctionTypeNullabilityWith(
-          InstantiateTypeABI::kResultTypeReg,
-          static_cast<int8_t>(Nullability::kNullable));
-      __ BranchIf(NOT_EQUAL, &runtime_call);
-      __ Ret();
-      break;
-    case Nullability::kLegacy:
-      __ CompareFunctionTypeNullabilityWith(
-          InstantiateTypeABI::kResultTypeReg,
-          static_cast<int8_t>(Nullability::kNonNullable));
+          static_cast<int8_t>(Nullability::kNonNullable),
+          InstantiateTypeABI::kScratchReg);
       __ BranchIf(EQUAL, &runtime_call);
       __ Ret();
   }
@@ -520,8 +497,9 @@
   __ BranchIf(NOT_EQUAL, &done, compiler::Assembler::kNearJump);
   if (null_safety) {
     // Instance type isn't a top type if non-nullable in null safe mode.
-    __ CompareTypeNullabilityWith(
-        scratch1_reg, static_cast<int8_t>(Nullability::kNonNullable));
+    __ CompareAbstractTypeNullabilityWith(
+        scratch1_reg, static_cast<int8_t>(Nullability::kNonNullable),
+        scratch2_reg);
     __ BranchIf(EQUAL, &done, compiler::Assembler::kNearJump);
   }
   __ Bind(&is_top_type);
@@ -619,8 +597,9 @@
     compiler::Label is_not_type;
     __ CompareClassId(kCurrentTypeReg, kTypeCid, kScratchReg);
     __ BranchIf(NOT_EQUAL, &is_not_type, compiler::Assembler::kNearJump);
-    __ CompareTypeNullabilityWith(
-        kCurrentTypeReg, static_cast<int8_t>(Nullability::kNonNullable));
+    __ CompareAbstractTypeNullabilityWith(
+        kCurrentTypeReg, static_cast<int8_t>(Nullability::kNonNullable),
+        kScratchReg);
     __ BranchIf(NOT_EQUAL, &is_assignable);
     // FutureOr is a special case because it may have the non-nullable bit set,
     // but FutureOr<T> functions as the union of T and Future<T>, so it must be
@@ -644,11 +623,9 @@
     __ Bind(&is_not_type);
     // Null is assignable to a type parameter only if it is nullable or if the
     // instantiation is nullable.
-    __ LoadFieldFromOffset(
-        kScratchReg, kCurrentTypeReg,
-        compiler::target::TypeParameter::nullability_offset(), kByte);
-    __ CompareImmediate(kScratchReg,
-                        static_cast<int8_t>(Nullability::kNonNullable));
+    __ CompareAbstractTypeNullabilityWith(
+        kCurrentTypeReg, static_cast<int8_t>(Nullability::kNonNullable),
+        kScratchReg);
     __ BranchIf(NOT_EQUAL, &is_assignable);
 
     // Don't set kScratchReg in here as on IA32, that's the function TAV reg.
@@ -878,10 +855,15 @@
 
   // Check whether this [Type] is instantiated/uninstantiated.
   __ LoadFieldFromOffset(TypeTestABI::kScratchReg, TypeTestABI::kDstTypeReg,
-                         target::Type::type_state_offset(), kByte);
+                         target::AbstractType::flags_offset(), kByte);
+  __ AndImmediate(
+      TypeTestABI::kScratchReg,
+      Utils::NBitMask<int32_t>(target::UntaggedAbstractType::kTypeStateBits)
+          << target::UntaggedAbstractType::kTypeStateShift);
   __ CompareImmediate(
       TypeTestABI::kScratchReg,
-      target::UntaggedAbstractType::kTypeStateFinalizedInstantiated);
+      target::UntaggedAbstractType::kTypeStateFinalizedInstantiated
+          << target::UntaggedAbstractType::kTypeStateShift);
   __ BranchIf(NOT_EQUAL, &is_complex_case, Assembler::kNearJump);
 
   // This [Type] could be a FutureOr. Subtype2TestCache does not support Smi.
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 5b0c61a..2123257 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -10554,20 +10554,15 @@
   result.set_packed_type_parameter_counts(0);
   result.set_named_parameter_names(Object::empty_array());
   result.SetNumParentTypeArguments(num_parent_type_arguments);
-  result.set_nullability(nullability);
   result.SetHash(0);
-  result.StoreNonPointer(&result.untag()->type_state_,
-                         UntaggedType::kAllocated);
+  result.set_flags(0);
+  result.set_nullability(nullability);
+  result.set_type_state(UntaggedAbstractType::kAllocated);
   result.InitializeTypeTestingStubNonAtomic(
       Code::Handle(Z, TypeTestingStubGenerator::DefaultCodeForType(result)));
   return result.ptr();
 }
 
-void FunctionType::set_type_state(uint8_t state) const {
-  ASSERT(state <= UntaggedFunctionType::kFinalizedUninstantiated);
-  StoreNonPointer(&untag()->type_state_, state);
-}
-
 const char* FunctionType::ToUserVisibleCString() const {
   Zone* zone = Thread::Current()->zone();
   ZoneTextBuffer printer(zone);
@@ -20133,12 +20128,6 @@
   UNREACHABLE();
 }
 
-Nullability AbstractType::nullability() const {
-  // AbstractType is an abstract class.
-  UNREACHABLE();
-  return Nullability::kNullable;
-}
-
 bool AbstractType::IsStrictlyNonNullable() const {
   // Null can be assigned to legacy and nullable types.
   if (!IsNonNullable()) {
@@ -20259,26 +20248,32 @@
   return false;
 }
 
-bool AbstractType::IsFinalized() const {
-  // AbstractType is an abstract class.
-  UNREACHABLE();
-  return false;
-}
-
 void AbstractType::SetIsFinalized() const {
-  // AbstractType is an abstract class.
-  UNREACHABLE();
-}
-
-bool AbstractType::IsBeingFinalized() const {
-  // AbstractType is an abstract class.
-  UNREACHABLE();
-  return false;
+  ASSERT(!IsFinalized());
+  set_type_state(IsInstantiated()
+                     ? UntaggedAbstractType::kFinalizedInstantiated
+                     : UntaggedAbstractType::kFinalizedUninstantiated);
 }
 
 void AbstractType::SetIsBeingFinalized() const {
-  // AbstractType is an abstract class.
-  UNREACHABLE();
+  ASSERT(!IsFinalized() && !IsBeingFinalized());
+  set_type_state(UntaggedAbstractType::kBeingFinalized);
+}
+
+void AbstractType::set_flags(uint32_t value) const {
+  StoreNonPointer(&untag()->flags_, value);
+}
+
+void AbstractType::set_type_state(UntaggedAbstractType::TypeState value) const {
+  ASSERT(!IsCanonical());
+  set_flags(
+      UntaggedAbstractType::TypeStateBits::update(value, untag()->flags_));
+}
+
+void AbstractType::set_nullability(Nullability value) const {
+  ASSERT(!IsCanonical());
+  set_flags(UntaggedAbstractType::NullabilityBits::update(
+      static_cast<uint8_t>(value), untag()->flags_));
 }
 
 bool AbstractType::IsEquivalent(const Instance& other,
@@ -21066,34 +21061,6 @@
   return type.ptr();
 }
 
-void Type::SetIsFinalized() const {
-  ASSERT(!IsFinalized());
-  if (IsInstantiated()) {
-    set_type_state(UntaggedType::kFinalizedInstantiated);
-  } else {
-    set_type_state(UntaggedType::kFinalizedUninstantiated);
-  }
-}
-
-void FunctionType::SetIsFinalized() const {
-  ASSERT(!IsFinalized());
-  if (IsInstantiated()) {
-    set_type_state(UntaggedFunctionType::kFinalizedInstantiated);
-  } else {
-    set_type_state(UntaggedFunctionType::kFinalizedUninstantiated);
-  }
-}
-
-void Type::SetIsBeingFinalized() const {
-  ASSERT(!IsFinalized() && !IsBeingFinalized());
-  set_type_state(UntaggedType::kBeingFinalized);
-}
-
-void FunctionType::SetIsBeingFinalized() const {
-  ASSERT(!IsFinalized() && !IsBeingFinalized());
-  set_type_state(UntaggedFunctionType::kBeingFinalized);
-}
-
 TypePtr Type::ToNullability(Nullability value, Heap::Space space) const {
   if (nullability() == value) {
     return ptr();
@@ -21151,7 +21118,7 @@
 }
 
 classid_t Type::type_class_id() const {
-  return untag()->type_class_id_;
+  return untag()->type_class_id();
 }
 
 ClassPtr Type::type_class() const {
@@ -21161,11 +21128,11 @@
 bool Type::IsInstantiated(Genericity genericity,
                           intptr_t num_free_fun_type_params,
                           TrailPtr trail) const {
-  if (untag()->type_state_ == UntaggedType::kFinalizedInstantiated) {
+  if (type_state() == UntaggedType::kFinalizedInstantiated) {
     return true;
   }
   if ((genericity == kAny) && (num_free_fun_type_params == kAllFree) &&
-      (untag()->type_state_ == UntaggedType::kFinalizedUninstantiated)) {
+      (type_state() == UntaggedType::kFinalizedUninstantiated)) {
     return false;
   }
   if (arguments() == TypeArguments::null()) {
@@ -21723,12 +21690,12 @@
                   Heap::Space space) {
   Zone* Z = Thread::Current()->zone();
   const Type& result = Type::Handle(Z, Type::New(space));
-  result.set_type_class(clazz);
   result.set_arguments(arguments);
   result.SetHash(0);
-  result.StoreNonPointer(&result.untag()->type_state_,
-                         UntaggedType::kAllocated);
+  result.set_flags(0);
   result.set_nullability(nullability);
+  result.set_type_state(UntaggedAbstractType::kAllocated);
+  result.set_type_class(clazz);
 
   result.InitializeTypeTestingStubNonAtomic(
       Code::Handle(Z, TypeTestingStubGenerator::DefaultCodeForType(result)));
@@ -21736,19 +21703,13 @@
 }
 
 void Type::set_type_class_id(intptr_t id) const {
-  COMPILE_ASSERT(
-      std::is_unsigned<decltype(UntaggedType::type_class_id_)>::value);
-  ASSERT(Utils::IsUint(sizeof(untag()->type_class_id_) * kBitsPerByte, id));
+  COMPILE_ASSERT(std::is_unsigned<ClassIdTagType>::value);
+  ASSERT(Utils::IsUint(sizeof(ClassIdTagType) * kBitsPerByte, id));
   // We should never need a Type object for a top-level class.
   ASSERT(!ClassTable::IsTopLevelCid(id));
   ASSERT(id != kIllegalCid);
   ASSERT(!IsInternalOnlyClassId(id));
-  StoreNonPointer(&untag()->type_class_id_, id);
-}
-
-void Type::set_type_state(uint8_t state) const {
-  ASSERT(state <= UntaggedType::kFinalizedUninstantiated);
-  StoreNonPointer(&untag()->type_state_, state);
+  untag()->set_type_class_id(id);
 }
 
 const char* Type::ToCString() const {
@@ -22064,6 +22025,12 @@
 
 void TypeRef::set_type(const AbstractType& value) const {
   ASSERT(!value.IsTypeRef());
+  if (value.IsNull()) {
+    ASSERT(!IsFinalized());
+  } else {
+    set_type_state(value.type_state());
+    set_nullability(value.nullability());
+  }
   untag()->set_type(value.ptr());
 }
 
@@ -22165,23 +22132,6 @@
   return printer.buffer();
 }
 
-void TypeParameter::SetIsFinalized() const {
-  ASSERT(!IsFinalized());
-  set_flags(UntaggedTypeParameter::FinalizedBit::update(
-      true, UntaggedTypeParameter::BeingFinalizedBit::update(false,
-                                                             untag()->flags_)));
-}
-
-void TypeParameter::SetIsBeingFinalized() const {
-  ASSERT(!IsFinalized());
-  set_flags(
-      UntaggedTypeParameter::BeingFinalizedBit::update(true, untag()->flags_));
-}
-
-void TypeParameter::set_nullability(Nullability value) const {
-  StoreNonPointer(&untag()->nullability_, static_cast<uint8_t>(value));
-}
-
 TypeParameterPtr TypeParameter::ToNullability(Nullability value,
                                               Heap::Space space) const {
   if (nullability() == value) {
@@ -22539,19 +22489,16 @@
   result.set_base(base);
   result.set_index(index);
   result.set_bound(bound);
+  result.SetHash(0);
   result.set_flags(0);
   result.set_nullability(nullability);
-  result.SetHash(0);
+  result.set_type_state(UntaggedAbstractType::kAllocated);
 
   result.InitializeTypeTestingStubNonAtomic(
       Code::Handle(Z, TypeTestingStubGenerator::DefaultCodeForType(result)));
   return result.ptr();
 }
 
-void TypeParameter::set_flags(uint8_t flags) const {
-  StoreNonPointer(&untag()->flags_, flags);
-}
-
 const char* TypeParameter::CanonicalNameCString(bool is_class_type_parameter,
                                                 intptr_t base,
                                                 intptr_t index) {
@@ -27252,34 +27199,15 @@
   const RecordType& result = RecordType::Handle(Z, RecordType::New(space));
   result.set_field_types(field_types);
   result.set_field_names(field_names);
-  result.set_nullability(nullability);
   result.SetHash(0);
-  result.StoreNonPointer(&result.untag()->type_state_,
-                         UntaggedType::kAllocated);
+  result.set_flags(0);
+  result.set_nullability(nullability);
+  result.set_type_state(UntaggedAbstractType::kAllocated);
   result.InitializeTypeTestingStubNonAtomic(
       Code::Handle(Z, TypeTestingStubGenerator::DefaultCodeForType(result)));
   return result.ptr();
 }
 
-void RecordType::set_type_state(uint8_t state) const {
-  ASSERT(state <= UntaggedRecordType::kFinalizedUninstantiated);
-  StoreNonPointer(&untag()->type_state_, state);
-}
-
-void RecordType::SetIsFinalized() const {
-  ASSERT(!IsFinalized());
-  if (IsInstantiated()) {
-    set_type_state(UntaggedRecordType::kFinalizedInstantiated);
-  } else {
-    set_type_state(UntaggedRecordType::kFinalizedUninstantiated);
-  }
-}
-
-void RecordType::SetIsBeingFinalized() const {
-  ASSERT(!IsFinalized() && !IsBeingFinalized());
-  set_type_state(UntaggedRecordType::kBeingFinalized);
-}
-
 RecordTypePtr RecordType::ToNullability(Nullability value,
                                         Heap::Space space) const {
   if (nullability() == value) {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 6920a6e..aaf321b 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -8165,12 +8165,25 @@
 // Subclasses of AbstractType are Type and TypeParameter.
 class AbstractType : public Instance {
  public:
-  virtual bool IsFinalized() const;
-  virtual void SetIsFinalized() const;
-  virtual bool IsBeingFinalized() const;
-  virtual void SetIsBeingFinalized() const;
+  static intptr_t flags_offset() {
+    return OFFSET_OF(UntaggedAbstractType, flags_);
+  }
 
-  virtual Nullability nullability() const;
+  bool IsFinalized() const {
+    const auto state = type_state();
+    return (state == UntaggedAbstractType::kFinalizedInstantiated) ||
+           (state == UntaggedAbstractType::kFinalizedUninstantiated);
+  }
+  void SetIsFinalized() const;
+  bool IsBeingFinalized() const {
+    return type_state() == UntaggedAbstractType::kBeingFinalized;
+  }
+  void SetIsBeingFinalized() const;
+
+  Nullability nullability() const {
+    return static_cast<Nullability>(
+        UntaggedAbstractType::NullabilityBits::decode(untag()->flags_));
+  }
   // Returns true if type has '?' nullability suffix, or it is a
   // built-in type which is always nullable (Null, dynamic or void).
   bool IsNullable() const { return nullability() == Nullability::kNullable; }
@@ -8462,45 +8475,33 @@
                                const AbstractType& other_type,
                                TypeEquality kind) const;
 
+  UntaggedAbstractType::TypeState type_state() const {
+    return static_cast<UntaggedAbstractType::TypeState>(
+        UntaggedAbstractType::TypeStateBits::decode(untag()->flags_));
+  }
+  void set_flags(uint32_t value) const;
+  void set_type_state(UntaggedAbstractType::TypeState value) const;
+  void set_nullability(Nullability value) const;
+
   HEAP_OBJECT_IMPLEMENTATION(AbstractType, Instance);
   friend class Class;
   friend class Function;
   friend class TypeArguments;
+  friend class TypeRef;
 };
 
 // A Type consists of a class, possibly parameterized with type
 // arguments. Example: C<T1, T2>.
 class Type : public AbstractType {
  public:
-  static intptr_t type_class_id_offset() {
-    return OFFSET_OF(UntaggedType, type_class_id_);
-  }
   static intptr_t arguments_offset() {
     return OFFSET_OF(UntaggedType, arguments_);
   }
-  static intptr_t type_state_offset() {
-    return OFFSET_OF(UntaggedType, type_state_);
-  }
   static intptr_t hash_offset() { return OFFSET_OF(UntaggedType, hash_); }
-  static intptr_t nullability_offset() {
-    return OFFSET_OF(UntaggedType, nullability_);
-  }
-  virtual bool IsFinalized() const {
-    return (untag()->type_state_ == UntaggedType::kFinalizedInstantiated) ||
-           (untag()->type_state_ == UntaggedType::kFinalizedUninstantiated);
-  }
-  virtual void SetIsFinalized() const;
-  virtual bool IsBeingFinalized() const {
-    return untag()->type_state_ == UntaggedType::kBeingFinalized;
-  }
-  virtual void SetIsBeingFinalized() const;
   virtual bool HasTypeClass() const {
     ASSERT(type_class_id() != kIllegalCid);
     return true;
   }
-  virtual Nullability nullability() const {
-    return static_cast<Nullability>(untag()->nullability_);
-  }
   TypePtr ToNullability(Nullability value, Heap::Space space) const;
   virtual classid_t type_class_id() const;
   virtual ClassPtr type_class() const;
@@ -8616,11 +8617,6 @@
   // in ClassIdTagType. This allows us to guard against that case, instead of
   // silently truncating the cid.
   void set_type_class_id(intptr_t id) const;
-  void set_type_state(uint8_t state) const;
-  void set_nullability(Nullability value) const {
-    ASSERT(!IsCanonical());
-    StoreNonPointer(&untag()->nullability_, static_cast<uint8_t>(value));
-  }
 
   static TypePtr New(Heap::Space space = Heap::kOld);
 
@@ -8648,28 +8644,10 @@
   using PackedNumOptionalParameters =
       UntaggedFunctionType::PackedNumOptionalParameters;
 
-  static intptr_t type_state_offset() {
-    return OFFSET_OF(UntaggedFunctionType, type_state_);
-  }
   static intptr_t hash_offset() {
     return OFFSET_OF(UntaggedFunctionType, hash_);
   }
-  static intptr_t nullability_offset() {
-    return OFFSET_OF(UntaggedFunctionType, nullability_);
-  }
-  virtual bool IsFinalized() const {
-    return (untag()->type_state_ == UntaggedType::kFinalizedInstantiated) ||
-           (untag()->type_state_ == UntaggedType::kFinalizedUninstantiated);
-  }
-  virtual void SetIsFinalized() const;
-  virtual bool IsBeingFinalized() const {
-    return untag()->type_state_ == UntaggedType::kBeingFinalized;
-  }
-  virtual void SetIsBeingFinalized() const;
   virtual bool HasTypeClass() const { return false; }
-  virtual Nullability nullability() const {
-    return static_cast<Nullability>(untag()->nullability_);
-  }
   FunctionTypePtr ToNullability(Nullability value, Heap::Space space) const;
   virtual classid_t type_class_id() const { return kIllegalCid; }
   virtual bool IsInstantiated(Genericity genericity = kAny,
@@ -8919,12 +8897,6 @@
  private:
   void SetHash(intptr_t value) const;
 
-  void set_type_state(uint8_t state) const;
-  void set_nullability(Nullability value) const {
-    ASSERT(!IsCanonical());
-    StoreNonPointer(&untag()->nullability_, static_cast<uint8_t>(value));
-  }
-
   static FunctionTypePtr New(Heap::Space space);
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(FunctionType, AbstractType);
@@ -8938,26 +8910,8 @@
 // names of the named fields.
 class RecordType : public AbstractType {
  public:
-  static intptr_t type_state_offset() {
-    return OFFSET_OF(UntaggedRecordType, type_state_);
-  }
   static intptr_t hash_offset() { return OFFSET_OF(UntaggedRecordType, hash_); }
-  static intptr_t nullability_offset() {
-    return OFFSET_OF(UntaggedRecordType, nullability_);
-  }
-  virtual bool IsFinalized() const {
-    return (untag()->type_state_ == UntaggedType::kFinalizedInstantiated) ||
-           (untag()->type_state_ == UntaggedType::kFinalizedUninstantiated);
-  }
-  virtual void SetIsFinalized() const;
-  virtual bool IsBeingFinalized() const {
-    return untag()->type_state_ == UntaggedType::kBeingFinalized;
-  }
-  virtual void SetIsBeingFinalized() const;
   virtual bool HasTypeClass() const { return false; }
-  virtual Nullability nullability() const {
-    return static_cast<Nullability>(untag()->nullability_);
-  }
   RecordTypePtr ToNullability(Nullability value, Heap::Space space) const;
   virtual classid_t type_class_id() const { return kIllegalCid; }
   virtual bool IsInstantiated(Genericity genericity = kAny,
@@ -9021,11 +8975,6 @@
  private:
   void SetHash(intptr_t value) const;
 
-  void set_type_state(uint8_t state) const;
-  void set_nullability(Nullability value) const {
-    ASSERT(!IsCanonical());
-    StoreNonPointer(&untag()->nullability_, static_cast<uint8_t>(value));
-  }
   void set_field_types(const Array& value) const;
   void set_field_names(const Array& value) const;
 
@@ -9046,19 +8995,6 @@
  public:
   static intptr_t type_offset() { return OFFSET_OF(UntaggedTypeRef, type_); }
 
-  virtual bool IsFinalized() const {
-    const AbstractType& ref_type = AbstractType::Handle(type());
-    return !ref_type.IsNull() && ref_type.IsFinalized();
-  }
-  virtual bool IsBeingFinalized() const {
-    const AbstractType& ref_type = AbstractType::Handle(type());
-    return ref_type.IsNull() || ref_type.IsBeingFinalized();
-  }
-  virtual Nullability nullability() const {
-    const AbstractType& ref_type = AbstractType::Handle(type());
-    ASSERT(!ref_type.IsNull());
-    return ref_type.nullability();
-  }
   virtual bool HasTypeClass() const {
     return (type() != AbstractType::null()) &&
            AbstractType::Handle(type()).HasTypeClass();
@@ -9123,23 +9059,6 @@
 // to the ObjectType.
 class TypeParameter : public AbstractType {
  public:
-  virtual bool IsFinalized() const {
-    return UntaggedTypeParameter::FinalizedBit::decode(untag()->flags_);
-  }
-  virtual void SetIsFinalized() const;
-  virtual bool IsBeingFinalized() const {
-    return UntaggedTypeParameter::BeingFinalizedBit::decode(untag()->flags_);
-  }
-  virtual void SetIsBeingFinalized() const;
-  static intptr_t flags_offset() {
-    return OFFSET_OF(UntaggedTypeParameter, flags_);
-  }
-  static intptr_t nullability_offset() {
-    return OFFSET_OF(UntaggedTypeParameter, nullability_);
-  }
-  virtual Nullability nullability() const {
-    return static_cast<Nullability>(untag()->nullability_);
-  }
   TypeParameterPtr ToNullability(Nullability value, Heap::Space space) const;
   virtual bool HasTypeClass() const { return false; }
   virtual classid_t type_class_id() const { return kIllegalCid; }
@@ -9232,8 +9151,6 @@
 
   void set_parameterized_class(const Class& value) const;
   void set_name(const String& value) const;
-  void set_flags(uint8_t flags) const;
-  void set_nullability(Nullability value) const;
 
   static TypeParameterPtr New();
 
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 9ad5d15..625db6d 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -2607,26 +2607,29 @@
 };
 
 class UntaggedAbstractType : public UntaggedInstance {
+ protected:
+  // Accessed from generated code.
+  std::atomic<uword> type_test_stub_entry_point_;
+  // Accessed from generated code.
+  uint32_t flags_;
+  COMPRESSED_POINTER_FIELD(CodePtr, type_test_stub)
+  VISIT_FROM(type_test_stub)
+
  public:
   enum TypeState {
     kAllocated,                // Initial state.
     kBeingFinalized,           // In the process of being finalized.
     kFinalizedInstantiated,    // Instantiated type ready for use.
     kFinalizedUninstantiated,  // Uninstantiated type ready for use.
-    // Adjust kTypeStateBitSize if more are added.
   };
 
- protected:
-  static constexpr intptr_t kTypeStateBitSize = 2;
-  COMPILE_ASSERT(sizeof(std::atomic<word>) == sizeof(word));
+  using NullabilityBits = BitField<decltype(flags_), uint8_t, 0, 2>;
+  static constexpr intptr_t kNullabilityMask = NullabilityBits::mask();
 
-  // Accessed from generated code.
-  std::atomic<uword> type_test_stub_entry_point_;
-#if defined(DART_COMPRESSED_POINTERS)
-  uint32_t padding_;  // Makes Windows and Posix agree on layout.
-#endif
-  COMPRESSED_POINTER_FIELD(CodePtr, type_test_stub)
-  VISIT_FROM(type_test_stub)
+  static constexpr intptr_t kTypeStateShift = NullabilityBits::kNextBit;
+  static constexpr intptr_t kTypeStateBits = 2;
+  using TypeStateBits =
+      BitField<decltype(flags_), uint8_t, kTypeStateShift, kTypeStateBits>;
 
  private:
   RAW_HEAP_OBJECT_IMPLEMENTATION(AbstractType);
@@ -2636,18 +2639,29 @@
 };
 
 class UntaggedType : public UntaggedAbstractType {
+ public:
+  static constexpr intptr_t kTypeClassIdShift = TypeStateBits::kNextBit;
+  using TypeClassIdBits = BitField<decltype(flags_),
+                                   ClassIdTagType,
+                                   kTypeClassIdShift,
+                                   sizeof(ClassIdTagType) * kBitsPerByte>;
+
  private:
   RAW_HEAP_OBJECT_IMPLEMENTATION(Type);
 
   COMPRESSED_POINTER_FIELD(TypeArgumentsPtr, arguments)
   COMPRESSED_POINTER_FIELD(SmiPtr, hash)
   VISIT_TO(hash)
-  ClassIdTagType type_class_id_;
-  uint8_t type_state_;
-  uint8_t nullability_;
 
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
 
+  ClassIdTagType type_class_id() const {
+    return TypeClassIdBits::decode(flags_);
+  }
+  void set_type_class_id(ClassIdTagType value) {
+    flags_ = TypeClassIdBits::update(value, flags_);
+  }
+
   friend class compiler::target::UntaggedType;
   friend class CidRewriteVisitor;
   friend class UntaggedTypeArguments;
@@ -2665,8 +2679,6 @@
   VISIT_TO(hash)
   AtomicBitFieldContainer<uint32_t> packed_parameter_counts_;
   AtomicBitFieldContainer<uint16_t> packed_type_parameter_counts_;
-  uint8_t type_state_;
-  uint8_t nullability_;
 
   // The bit fields are public for use in kernel_to_il.cc.
  public:
@@ -2716,8 +2728,6 @@
   COMPRESSED_POINTER_FIELD(ArrayPtr, field_names);
   COMPRESSED_POINTER_FIELD(SmiPtr, hash)
   VISIT_TO(hash)
-  uint8_t type_state_;
-  uint8_t nullability_;
 
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
 };
@@ -2742,14 +2752,6 @@
   ClassIdTagType parameterized_class_id_;  // Or kFunctionCid for function tp.
   uint8_t base_;   // Number of enclosing function type parameters.
   uint8_t index_;  // Keep size in sync with BuildTypeParameterTypeTestStub.
-  uint8_t flags_;
-  uint8_t nullability_;
-
- public:
-  using BeingFinalizedBit = BitField<decltype(flags_), bool, 0, 1>;
-  using FinalizedBit =
-      BitField<decltype(flags_), bool, BeingFinalizedBit::kNextBit, 1>;
-  static constexpr intptr_t kFlagsBitSize = FinalizedBit::kNextBit;
 
  private:
   CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); }
diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc
index b35eb19..ef68911 100644
--- a/runtime/vm/raw_object_fields.cc
+++ b/runtime/vm/raw_object_fields.cc
@@ -135,7 +135,6 @@
   F(TypeArguments, nullability_)                                               \
   F(AbstractType, type_test_stub_)                                             \
   F(Type, type_test_stub_)                                                     \
-  F(Type, type_class_id_)                                                      \
   F(Type, arguments_)                                                          \
   F(Type, hash_)                                                               \
   F(FunctionType, type_test_stub_)                                             \
diff --git a/runtime/vm/type_testing_stubs.cc b/runtime/vm/type_testing_stubs.cc
index 6478449..25a8882 100644
--- a/runtime/vm/type_testing_stubs.cc
+++ b/runtime/vm/type_testing_stubs.cc
@@ -1066,22 +1066,26 @@
   if (strict_null_safety) {
     __ BranchIf(NOT_EQUAL, &check_subtype_type_class_ids);
     // If non-nullable Object, then the subtype must be legacy or non-nullable.
-    __ CompareTypeNullabilityWith(
+    __ CompareAbstractTypeNullabilityWith(
         TTSInternalRegs::kSuperTypeArgumentReg,
-        static_cast<int8_t>(Nullability::kNonNullable));
+        static_cast<int8_t>(Nullability::kNonNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(NOT_EQUAL, &is_subtype);
     __ Comment("Checking for legacy or non-nullable instance type argument");
     compiler::Label subtype_is_type;
     UnwrapAbstractType(assembler, TTSInternalRegs::kSubTypeArgumentReg,
                        TTSInternalRegs::kScratchReg, &subtype_is_type);
-    __ CompareFunctionTypeNullabilityWith(
+    __ CompareAbstractTypeNullabilityWith(
         TTSInternalRegs::kSubTypeArgumentReg,
-        static_cast<int8_t>(Nullability::kNullable));
+        static_cast<int8_t>(Nullability::kNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(EQUAL, check_failed);
     __ Jump(&is_subtype);
     __ Bind(&subtype_is_type);
-    __ CompareTypeNullabilityWith(TTSInternalRegs::kSubTypeArgumentReg,
-                                  static_cast<int8_t>(Nullability::kNullable));
+    __ CompareAbstractTypeNullabilityWith(
+        TTSInternalRegs::kSubTypeArgumentReg,
+        static_cast<int8_t>(Nullability::kNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(EQUAL, check_failed);
     __ Jump(&is_subtype);
   } else {
@@ -1107,15 +1111,17 @@
     compiler::Label supertype_is_type;
     UnwrapAbstractType(assembler, TTSInternalRegs::kSuperTypeArgumentReg,
                        TTSInternalRegs::kScratchReg, &supertype_is_type);
-    __ CompareFunctionTypeNullabilityWith(
+    __ CompareAbstractTypeNullabilityWith(
         TTSInternalRegs::kSuperTypeArgumentReg,
-        static_cast<int8_t>(Nullability::kNonNullable));
+        static_cast<int8_t>(Nullability::kNonNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(EQUAL, check_failed);
     __ Jump(&is_subtype, compiler::Assembler::kNearJump);
     __ Bind(&supertype_is_type);
-    __ CompareTypeNullabilityWith(
+    __ CompareAbstractTypeNullabilityWith(
         TTSInternalRegs::kSuperTypeArgumentReg,
-        static_cast<int8_t>(Nullability::kNonNullable));
+        static_cast<int8_t>(Nullability::kNonNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(EQUAL, check_failed);
   }
 
@@ -1165,9 +1171,10 @@
   if (type.IsObjectType() || type.IsDartFunctionType()) {
     if (strict_null_safety && type.IsNonNullable()) {
       // Nullable types cannot be a subtype of a non-nullable type.
-      __ CompareFunctionTypeNullabilityWith(
+      __ CompareAbstractTypeNullabilityWith(
           TTSInternalRegs::kSubTypeArgumentReg,
-          compiler::target::Nullability::kNullable);
+          static_cast<int8_t>(Nullability::kNullable),
+          TTSInternalRegs::kScratchReg);
       __ BranchIf(EQUAL, check_failed);
     }
     // No further checks needed for non-nullable Object or Function.
@@ -1183,8 +1190,10 @@
   __ Bind(&sub_is_type);
   if (strict_null_safety && type.IsNonNullable()) {
     // Nullable types cannot be a subtype of a non-nullable type in strict mode.
-    __ CompareTypeNullabilityWith(TTSInternalRegs::kSubTypeArgumentReg,
-                                  compiler::target::Nullability::kNullable);
+    __ CompareAbstractTypeNullabilityWith(
+        TTSInternalRegs::kSubTypeArgumentReg,
+        static_cast<int8_t>(Nullability::kNullable),
+        TTSInternalRegs::kScratchReg);
     __ BranchIf(EQUAL, check_failed);
     // Fall through to bottom type checks.
   }