@@ -80,6 +80,8 @@ namespace llvm {
80
80
81
81
#define DEBUG_TYPE " Generic signature builder"
82
82
STATISTIC (NumPotentialArchetypes, " # of potential archetypes" );
83
+ STATISTIC (NumEquivalenceClassesAllocated, " # of equivalence classes allocated" );
84
+ STATISTIC (NumEquivalenceClassesFreed, " # of equivalence classes freed" );
83
85
STATISTIC (NumConformances, " # of conformances tracked" );
84
86
STATISTIC (NumConformanceConstraints, " # of conformance constraints tracked" );
85
87
STATISTIC (NumSameTypeConstraints, " # of same-type constraints tracked" );
@@ -529,13 +531,18 @@ GenericSignatureBuilder::Implementation::allocateEquivalenceClass(
529
531
530
532
auto equivClass = new (mem) EquivalenceClass (representative);
531
533
EquivalenceClasses.push_back (equivClass);
534
+
535
+ ++NumEquivalenceClassesAllocated;
536
+
532
537
return equivClass;
533
538
}
534
539
535
540
void GenericSignatureBuilder::Implementation::deallocateEquivalenceClass (
536
541
EquivalenceClass *equivClass) {
537
542
EquivalenceClasses.erase (equivClass);
538
543
FreeEquivalenceClasses.push_back (equivClass);
544
+
545
+ ++NumEquivalenceClassesFreed;
539
546
}
540
547
541
548
namespace {
@@ -1620,9 +1627,22 @@ bool FloatingRequirementSource::isRecursive(
1620
1627
return false ;
1621
1628
}
1622
1629
1623
- GenericSignatureBuilder::PotentialArchetype::~PotentialArchetype () {
1630
+ GenericSignatureBuilder::PotentialArchetype::PotentialArchetype (
1631
+ PotentialArchetype *parent, AssociatedTypeDecl *assocType)
1632
+ : parentOrContext(parent), identifier(assocType) {
1633
+ ++NumPotentialArchetypes;
1634
+ assert (parent != nullptr && " Not a nested type?" );
1635
+ assert (assocType->getOverriddenDecls ().empty ());
1636
+ }
1637
+
1638
+
1639
+ GenericSignatureBuilder::PotentialArchetype::PotentialArchetype (
1640
+ ASTContext &ctx, GenericParamKey genericParam)
1641
+ : parentOrContext(&ctx), identifier(genericParam) {
1624
1642
++NumPotentialArchetypes;
1643
+ }
1625
1644
1645
+ GenericSignatureBuilder::PotentialArchetype::~PotentialArchetype () {
1626
1646
for (const auto &nested : NestedTypes) {
1627
1647
for (auto pa : nested.second ) {
1628
1648
pa->~PotentialArchetype ();
0 commit comments