@@ -237,6 +237,24 @@ RequirementSignatureRequestRQM::evaluate(Evaluator &evaluator,
237
237
requirements.push_back ({req, SourceLoc (), /* inferred=*/ false });
238
238
}
239
239
240
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
241
+ rewriteCtx.beginTimer (" RequirementSignatureRequest" );
242
+ llvm::dbgs () << " [" ;
243
+ for (auto *proto : component)
244
+ llvm::dbgs () << " " << proto->getName ();
245
+ llvm::dbgs () << " ]\n " ;
246
+ }
247
+
248
+ SWIFT_DEFER {
249
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
250
+ rewriteCtx.endTimer (" RequirementSignatureRequest" );
251
+ llvm::dbgs () << " [" ;
252
+ for (auto *proto : component)
253
+ llvm::dbgs () << " " << proto->getName ();
254
+ llvm::dbgs () << " ]\n " ;
255
+ }
256
+ };
257
+
240
258
unsigned attempt = 0 ;
241
259
for (;;) {
242
260
// Heap-allocate the requirement machine to save stack space.
@@ -501,12 +519,19 @@ AbstractGenericSignatureRequestRQM::evaluate(
501
519
requirements.push_back ({req, SourceLoc (), /* wasInferred=*/ false });
502
520
}
503
521
522
+ auto &rewriteCtx = ctx.getRewriteContext ();
523
+
524
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
525
+ rewriteCtx.beginTimer (" AbstractGenericSignatureRequest" );
526
+ llvm::dbgs () << " \n " ;
527
+ }
528
+
504
529
// Preprocess requirements to eliminate conformances on generic parameters
505
530
// which are made concrete.
506
531
if (ctx.LangOpts .EnableRequirementMachineConcreteContraction ) {
507
532
SmallVector<StructuralRequirement, 4 > contractedRequirements;
508
533
if (performConcreteContraction (requirements, contractedRequirements,
509
- ctx. getRewriteContext () .getDebugOptions ()
534
+ rewriteCtx .getDebugOptions ()
510
535
.contains (DebugFlags::ConcreteContraction))) {
511
536
std::swap (contractedRequirements, requirements);
512
537
}
@@ -516,7 +541,7 @@ AbstractGenericSignatureRequestRQM::evaluate(
516
541
for (;;) {
517
542
// Heap-allocate the requirement machine to save stack space.
518
543
std::unique_ptr<RequirementMachine> machine (new RequirementMachine (
519
- ctx. getRewriteContext () ));
544
+ rewriteCtx ));
520
545
521
546
auto status =
522
547
machine->initWithWrittenRequirements (genericParams, requirements);
@@ -547,6 +572,11 @@ AbstractGenericSignatureRequestRQM::evaluate(
547
572
result.verify ();
548
573
}
549
574
575
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
576
+ rewriteCtx.endTimer (" AbstractGenericSignatureRequest" );
577
+ llvm::dbgs () << result << " \n " ;
578
+ }
579
+
550
580
return GenericSignatureWithError (result, errorFlags);
551
581
}
552
582
}
@@ -648,12 +678,23 @@ InferredGenericSignatureRequestRQM::evaluate(
648
678
for (const auto &req : addedRequirements)
649
679
requirements.push_back ({req, SourceLoc (), /* wasInferred=*/ true });
650
680
681
+ auto &rewriteCtx = ctx.getRewriteContext ();
682
+
683
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
684
+ rewriteCtx.beginTimer (" InferredGenericSignatureRequest" );
685
+
686
+ llvm::dbgs () << " @ " ;
687
+ auto &sourceMgr = ctx.SourceMgr ;
688
+ loc.print (llvm::dbgs (), sourceMgr);
689
+ llvm::dbgs () << " \n " ;
690
+ }
691
+
651
692
// Preprocess requirements to eliminate conformances on generic parameters
652
693
// which are made concrete.
653
694
if (ctx.LangOpts .EnableRequirementMachineConcreteContraction ) {
654
695
SmallVector<StructuralRequirement, 4 > contractedRequirements;
655
696
if (performConcreteContraction (requirements, contractedRequirements,
656
- ctx. getRewriteContext () .getDebugOptions ()
697
+ rewriteCtx .getDebugOptions ()
657
698
.contains (DebugFlags::ConcreteContraction))) {
658
699
std::swap (contractedRequirements, requirements);
659
700
}
@@ -663,7 +704,7 @@ InferredGenericSignatureRequestRQM::evaluate(
663
704
for (;;) {
664
705
// Heap-allocate the requirement machine to save stack space.
665
706
std::unique_ptr<RequirementMachine> machine (new RequirementMachine (
666
- ctx. getRewriteContext () ));
707
+ rewriteCtx ));
667
708
668
709
auto status =
669
710
machine->initWithWrittenRequirements (genericParams, requirements);
@@ -680,6 +721,12 @@ InferredGenericSignatureRequestRQM::evaluate(
680
721
681
722
auto result = GenericSignature::get (genericParams,
682
723
parentSig.getRequirements ());
724
+
725
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
726
+ rewriteCtx.endTimer (" InferredGenericSignatureRequest" );
727
+ llvm::dbgs () << result << " \n " ;
728
+ }
729
+
683
730
return GenericSignatureWithError (
684
731
result, GenericSignatureErrorFlags::CompletionFailed);
685
732
}
@@ -717,6 +764,11 @@ InferredGenericSignatureRequestRQM::evaluate(
717
764
result.verify ();
718
765
}
719
766
767
+ if (rewriteCtx.getDebugOptions ().contains (DebugFlags::Timers)) {
768
+ rewriteCtx.endTimer (" InferredGenericSignatureRequest" );
769
+ llvm::dbgs () << result << " \n " ;
770
+ }
771
+
720
772
return GenericSignatureWithError (result, errorFlags);
721
773
}
722
774
}
0 commit comments