@@ -218,10 +218,18 @@ class LinkEntity {
218218 // / The pointer is a NominalTypeDecl*.
219219 NominalTypeDescriptor,
220220
221+ // / The nominal type descriptor runtime record for a nominal type.
222+ // / The pointer is a NominalTypeDecl*.
223+ NominalTypeDescriptorRecord,
224+
221225 // / The descriptor for an opaque type.
222226 // / The pointer is an OpaqueTypeDecl*.
223227 OpaqueTypeDescriptor,
224228
229+ // / The runtime record for a descriptor for an opaque type.
230+ // / The pointer is an OpaqueTypeDecl*.
231+ OpaqueTypeDescriptorRecord,
232+
225233 // / The descriptor accessor for an opaque type used for dynamic functions.
226234 // / The pointer is an OpaqueTypeDecl*.
227235 OpaqueTypeDescriptorAccessor,
@@ -268,6 +276,10 @@ class LinkEntity {
268276 // / The pointer is a ProtocolDecl*.
269277 ProtocolDescriptor,
270278
279+ // / The protocol descriptor runtime record for a protocol type.
280+ // / The pointer is a ProtocolDecl*.
281+ ProtocolDescriptorRecord,
282+
271283 // / The alias referring to the base of the requirements within the
272284 // / protocol descriptor, which is used to determine the offset of a
273285 // / particular requirement in the witness table.
@@ -368,6 +380,10 @@ class LinkEntity {
368380 // / The pointer is a RootProtocolConformance*.
369381 ProtocolConformanceDescriptor,
370382
383+ // / The protocol conformance descriptor runtime record for a conformance.
384+ // / The pointer is a RootProtocolConformance*.
385+ ProtocolConformanceDescriptorRecord,
386+
371387 // These are both type kinds and protocol-conformance kinds.
372388
373389 // / A lazy protocol witness accessor function. The pointer is a
@@ -477,6 +493,7 @@ class LinkEntity {
477493
478494 static bool isRootProtocolConformanceKind (Kind k) {
479495 return (k == Kind::ProtocolConformanceDescriptor ||
496+ k == Kind::ProtocolConformanceDescriptorRecord ||
480497 k == Kind::ProtocolWitnessTable);
481498 }
482499
@@ -830,12 +847,24 @@ class LinkEntity {
830847 return entity;
831848 }
832849
850+ static LinkEntity forNominalTypeDescriptorRecord (NominalTypeDecl *decl) {
851+ LinkEntity entity;
852+ entity.setForDecl (Kind::NominalTypeDescriptorRecord, decl);
853+ return entity;
854+ }
855+
833856 static LinkEntity forOpaqueTypeDescriptor (OpaqueTypeDecl *decl) {
834857 LinkEntity entity;
835858 entity.setForDecl (Kind::OpaqueTypeDescriptor, decl);
836859 return entity;
837860 }
838861
862+ static LinkEntity forOpaqueTypeDescriptorRecord (OpaqueTypeDecl *decl) {
863+ LinkEntity entity;
864+ entity.setForDecl (Kind::OpaqueTypeDescriptorRecord, decl);
865+ return entity;
866+ }
867+
839868 static LinkEntity forOpaqueTypeDescriptorAccessor (OpaqueTypeDecl *decl) {
840869 LinkEntity entity;
841870 entity.setForDecl (Kind::OpaqueTypeDescriptorAccessor, decl);
@@ -898,6 +927,12 @@ class LinkEntity {
898927 return entity;
899928 }
900929
930+ static LinkEntity forProtocolDescriptorRecord (ProtocolDecl *decl) {
931+ LinkEntity entity;
932+ entity.setForDecl (Kind::ProtocolDescriptorRecord, decl);
933+ return entity;
934+ }
935+
901936 static LinkEntity forProtocolRequirementsBaseDescriptor (ProtocolDecl *decl) {
902937 LinkEntity entity;
903938 entity.setForDecl (Kind::ProtocolRequirementsBaseDescriptor, decl);
@@ -1066,6 +1101,14 @@ class LinkEntity {
10661101 return entity;
10671102 }
10681103
1104+ static LinkEntity
1105+ forProtocolConformanceDescriptorRecord (const RootProtocolConformance *C) {
1106+ LinkEntity entity;
1107+ entity.setForProtocolConformance (Kind::ProtocolConformanceDescriptorRecord,
1108+ C);
1109+ return entity;
1110+ }
1111+
10691112 static LinkEntity forCoroutineContinuationPrototype (CanSILFunctionType type) {
10701113 LinkEntity entity;
10711114 entity.setForType (Kind::CoroutineContinuationPrototype, type);
0 commit comments