@@ -222,10 +222,18 @@ class LinkEntity {
222
222
// / The pointer is a NominalTypeDecl*.
223
223
NominalTypeDescriptor,
224
224
225
+ // / The nominal type descriptor runtime record for a nominal type.
226
+ // / The pointer is a NominalTypeDecl*.
227
+ NominalTypeDescriptorRecord,
228
+
225
229
// / The descriptor for an opaque type.
226
230
// / The pointer is an OpaqueTypeDecl*.
227
231
OpaqueTypeDescriptor,
228
232
233
+ // / The runtime record for a descriptor for an opaque type.
234
+ // / The pointer is an OpaqueTypeDecl*.
235
+ OpaqueTypeDescriptorRecord,
236
+
229
237
// / The descriptor accessor for an opaque type used for dynamic functions.
230
238
// / The pointer is an OpaqueTypeDecl*.
231
239
OpaqueTypeDescriptorAccessor,
@@ -272,6 +280,10 @@ class LinkEntity {
272
280
// / The pointer is a ProtocolDecl*.
273
281
ProtocolDescriptor,
274
282
283
+ // / The protocol descriptor runtime record for a protocol type.
284
+ // / The pointer is a ProtocolDecl*.
285
+ ProtocolDescriptorRecord,
286
+
275
287
// / The alias referring to the base of the requirements within the
276
288
// / protocol descriptor, which is used to determine the offset of a
277
289
// / particular requirement in the witness table.
@@ -372,6 +384,10 @@ class LinkEntity {
372
384
// / The pointer is a RootProtocolConformance*.
373
385
ProtocolConformanceDescriptor,
374
386
387
+ // / The protocol conformance descriptor runtime record for a conformance.
388
+ // / The pointer is a RootProtocolConformance*.
389
+ ProtocolConformanceDescriptorRecord,
390
+
375
391
// These are both type kinds and protocol-conformance kinds.
376
392
377
393
// / A lazy protocol witness accessor function. The pointer is a
@@ -481,6 +497,7 @@ class LinkEntity {
481
497
482
498
static bool isRootProtocolConformanceKind (Kind k) {
483
499
return (k == Kind::ProtocolConformanceDescriptor ||
500
+ k == Kind::ProtocolConformanceDescriptorRecord ||
484
501
k == Kind::ProtocolWitnessTable);
485
502
}
486
503
@@ -834,12 +851,24 @@ class LinkEntity {
834
851
return entity;
835
852
}
836
853
854
+ static LinkEntity forNominalTypeDescriptorRecord (NominalTypeDecl *decl) {
855
+ LinkEntity entity;
856
+ entity.setForDecl (Kind::NominalTypeDescriptorRecord, decl);
857
+ return entity;
858
+ }
859
+
837
860
static LinkEntity forOpaqueTypeDescriptor (OpaqueTypeDecl *decl) {
838
861
LinkEntity entity;
839
862
entity.setForDecl (Kind::OpaqueTypeDescriptor, decl);
840
863
return entity;
841
864
}
842
865
866
+ static LinkEntity forOpaqueTypeDescriptorRecord (OpaqueTypeDecl *decl) {
867
+ LinkEntity entity;
868
+ entity.setForDecl (Kind::OpaqueTypeDescriptorRecord, decl);
869
+ return entity;
870
+ }
871
+
843
872
static LinkEntity forOpaqueTypeDescriptorAccessor (OpaqueTypeDecl *decl) {
844
873
LinkEntity entity;
845
874
entity.setForDecl (Kind::OpaqueTypeDescriptorAccessor, decl);
@@ -902,6 +931,12 @@ class LinkEntity {
902
931
return entity;
903
932
}
904
933
934
+ static LinkEntity forProtocolDescriptorRecord (ProtocolDecl *decl) {
935
+ LinkEntity entity;
936
+ entity.setForDecl (Kind::ProtocolDescriptorRecord, decl);
937
+ return entity;
938
+ }
939
+
905
940
static LinkEntity forProtocolRequirementsBaseDescriptor (ProtocolDecl *decl) {
906
941
LinkEntity entity;
907
942
entity.setForDecl (Kind::ProtocolRequirementsBaseDescriptor, decl);
@@ -1070,6 +1105,14 @@ class LinkEntity {
1070
1105
return entity;
1071
1106
}
1072
1107
1108
+ static LinkEntity
1109
+ forProtocolConformanceDescriptorRecord (const RootProtocolConformance *C) {
1110
+ LinkEntity entity;
1111
+ entity.setForProtocolConformance (Kind::ProtocolConformanceDescriptorRecord,
1112
+ C);
1113
+ return entity;
1114
+ }
1115
+
1073
1116
static LinkEntity forCoroutineContinuationPrototype (CanSILFunctionType type) {
1074
1117
LinkEntity entity;
1075
1118
entity.setForType (Kind::CoroutineContinuationPrototype, type);
0 commit comments