@@ -436,6 +436,18 @@ SWIFT_ALLOWED_RUNTIME_GLOBAL_CTOR_END
436
436
extern " C" void *_objc_empty_cache;
437
437
#endif
438
438
439
+ template <>
440
+ bool Metadata::isCanonicalStaticallySpecializedGenericMetadata () const {
441
+ if (auto *metadata = dyn_cast<StructMetadata>(this ))
442
+ return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
443
+ if (auto *metadata = dyn_cast<EnumMetadata>(this ))
444
+ return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
445
+ if (auto *metadata = dyn_cast<ClassMetadata>(this ))
446
+ return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
447
+
448
+ return false ;
449
+ }
450
+
439
451
static void copyMetadataPattern (void **section,
440
452
const GenericMetadataPartialPattern *pattern) {
441
453
memcpy (section + pattern->OffsetInWords ,
@@ -672,6 +684,9 @@ swift::swift_getGenericMetadata(MetadataRequest request,
672
684
arguments);
673
685
auto result = cache.getOrInsert (key, request, description, arguments);
674
686
687
+ assert (
688
+ !result.second .Value ->isCanonicalStaticallySpecializedGenericMetadata ());
689
+
675
690
return result.second ;
676
691
}
677
692
@@ -5521,18 +5536,6 @@ bool Metadata::satisfiesClassConstraint() const {
5521
5536
return isAnyClass ();
5522
5537
}
5523
5538
5524
- template <>
5525
- bool Metadata::isCanonicalStaticallySpecializedGenericMetadata () const {
5526
- if (auto *metadata = dyn_cast<StructMetadata>(this ))
5527
- return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
5528
- if (auto *metadata = dyn_cast<EnumMetadata>(this ))
5529
- return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
5530
- if (auto *metadata = dyn_cast<ClassMetadata>(this ))
5531
- return metadata->isCanonicalStaticallySpecializedGenericMetadata ();
5532
-
5533
- return false ;
5534
- }
5535
-
5536
5539
#if !NDEBUG
5537
5540
static bool referencesAnonymousContext (Demangle::Node *node) {
5538
5541
if (node->getKind () == Demangle::Node::Kind::AnonymousContext)
0 commit comments