@@ -222,10 +222,18 @@ class LinkEntity {
222222 /// The pointer is a NominalTypeDecl*.
223223 NominalTypeDescriptor,
224224
225+ /// The nominal type descriptor runtime record for a nominal type.
226+ /// The pointer is a NominalTypeDecl*.
227+ NominalTypeDescriptorRecord,
228+
225229 /// The descriptor for an opaque type.
226230 /// The pointer is an OpaqueTypeDecl*.
227231 OpaqueTypeDescriptor,
228232
233+ /// The runtime record for a descriptor for an opaque type.
234+ /// The pointer is an OpaqueTypeDecl*.
235+ OpaqueTypeDescriptorRecord,
236+
229237 /// The descriptor accessor for an opaque type used for dynamic functions.
230238 /// The pointer is an OpaqueTypeDecl*.
231239 OpaqueTypeDescriptorAccessor,
@@ -272,6 +280,10 @@ class LinkEntity {
272280 /// The pointer is a ProtocolDecl*.
273281 ProtocolDescriptor,
274282
283+ /// The protocol descriptor runtime record for a protocol type.
284+ /// The pointer is a ProtocolDecl*.
285+ ProtocolDescriptorRecord,
286+
275287 /// The alias referring to the base of the requirements within the
276288 /// protocol descriptor, which is used to determine the offset of a
277289 /// particular requirement in the witness table.
@@ -372,6 +384,10 @@ class LinkEntity {
372384 /// The pointer is a RootProtocolConformance*.
373385 ProtocolConformanceDescriptor,
374386
387+ /// The protocol conformance descriptor runtime record for a conformance.
388+ /// The pointer is a RootProtocolConformance*.
389+ ProtocolConformanceDescriptorRecord,
390+
375391 // These are both type kinds and protocol-conformance kinds.
376392
377393 /// A lazy protocol witness accessor function. The pointer is a
@@ -481,6 +497,7 @@ class LinkEntity {
481497
482498 static bool isRootProtocolConformanceKind(Kind k) {
483499 return (k == Kind::ProtocolConformanceDescriptor ||
500+ k == Kind::ProtocolConformanceDescriptorRecord ||
484501 k == Kind::ProtocolWitnessTable);
485502 }
486503
@@ -834,12 +851,24 @@ class LinkEntity {
834851 return entity;
835852 }
836853
854+ static LinkEntity forNominalTypeDescriptorRecord(NominalTypeDecl *decl) {
855+ LinkEntity entity;
856+ entity.setForDecl(Kind::NominalTypeDescriptorRecord, decl);
857+ return entity;
858+ }
859+
837860 static LinkEntity forOpaqueTypeDescriptor(OpaqueTypeDecl *decl) {
838861 LinkEntity entity;
839862 entity.setForDecl(Kind::OpaqueTypeDescriptor, decl);
840863 return entity;
841864 }
842865
866+ static LinkEntity forOpaqueTypeDescriptorRecord(OpaqueTypeDecl *decl) {
867+ LinkEntity entity;
868+ entity.setForDecl(Kind::OpaqueTypeDescriptorRecord, decl);
869+ return entity;
870+ }
871+
843872 static LinkEntity forOpaqueTypeDescriptorAccessor(OpaqueTypeDecl *decl) {
844873 LinkEntity entity;
845874 entity.setForDecl(Kind::OpaqueTypeDescriptorAccessor, decl);
@@ -902,6 +931,12 @@ class LinkEntity {
902931 return entity;
903932 }
904933
934+ static LinkEntity forProtocolDescriptorRecord(ProtocolDecl *decl) {
935+ LinkEntity entity;
936+ entity.setForDecl(Kind::ProtocolDescriptorRecord, decl);
937+ return entity;
938+ }
939+
905940 static LinkEntity forProtocolRequirementsBaseDescriptor(ProtocolDecl *decl) {
906941 LinkEntity entity;
907942 entity.setForDecl(Kind::ProtocolRequirementsBaseDescriptor, decl);
@@ -1070,6 +1105,14 @@ class LinkEntity {
10701105 return entity;
10711106 }
10721107
1108+ static LinkEntity
1109+ forProtocolConformanceDescriptorRecord(const RootProtocolConformance *C) {
1110+ LinkEntity entity;
1111+ entity.setForProtocolConformance(Kind::ProtocolConformanceDescriptorRecord,
1112+ C);
1113+ return entity;
1114+ }
1115+
10731116 static LinkEntity forCoroutineContinuationPrototype(CanSILFunctionType type) {
10741117 LinkEntity entity;
10751118 entity.setForType(Kind::CoroutineContinuationPrototype, type);
0 commit comments