@@ -56,7 +56,6 @@ static bool sortTimers();
56
56
static SignpostEmitter &signposts ();
57
57
static sys::SmartMutex<true > &timerLock ();
58
58
static TimerGroup &defaultTimerGroup ();
59
- static TimerGroup *claimDefaultTimerGroup ();
60
59
static Name2PairMap &namedGroupedTimers ();
61
60
62
61
// ===----------------------------------------------------------------------===//
@@ -467,10 +466,6 @@ void TimerGroup::constructForStatistics() {
467
466
namedGroupedTimers ();
468
467
}
469
468
470
- std::unique_ptr<TimerGroup> TimerGroup::aquireDefaultGroup () {
471
- return std::unique_ptr<TimerGroup>(claimDefaultTimerGroup ());
472
- }
473
-
474
469
// ===----------------------------------------------------------------------===//
475
470
// Timer Globals
476
471
//
@@ -495,36 +490,27 @@ class llvm::TimerGlobals {
495
490
cl::opt<std::string, true > InfoOutputFilename;
496
491
cl::opt<bool > TrackSpace;
497
492
cl::opt<bool > SortTimers;
493
+ sys::SmartMutex<true > TimerLock;
494
+ TimerGroup DefaultTimerGroup{" misc" , " Miscellaneous Ungrouped Timers" ,
495
+ TimerLock};
496
+ SignpostEmitter Signposts;
498
497
499
498
private:
500
499
// Order of these members and initialization below is important. For example
501
500
// the defaultTimerGroup uses the timerLock. Most of these also depend on the
502
501
// options above.
503
502
std::once_flag InitDeferredFlag;
504
- std::optional<SignpostEmitter> SignpostsPtr;
505
- std::optional<sys::SmartMutex<true >> TimerLockPtr;
506
- std::unique_ptr<TimerGroup> DefaultTimerGroupPtr;
507
503
std::optional<Name2PairMap> NamedGroupedTimersPtr;
508
504
TimerGlobals &initDeferred () {
509
- std::call_once (InitDeferredFlag, [this ]() {
510
- SignpostsPtr.emplace ();
511
- TimerLockPtr.emplace ();
512
- DefaultTimerGroupPtr.reset (new TimerGroup (
513
- " misc" , " Miscellaneous Ungrouped Timers" , *TimerLockPtr));
514
- NamedGroupedTimersPtr.emplace ();
515
- });
505
+ std::call_once (InitDeferredFlag,
506
+ [this ]() { NamedGroupedTimersPtr.emplace (); });
516
507
return *this ;
517
508
}
518
509
519
510
public:
520
- SignpostEmitter &signposts () { return *initDeferred ().SignpostsPtr ; }
521
- sys::SmartMutex<true > &timerLock () { return *initDeferred ().TimerLockPtr ; }
522
- TimerGroup &defaultTimerGroup () {
523
- return *initDeferred ().DefaultTimerGroupPtr ;
524
- }
525
- TimerGroup *claimDefaultTimerGroup () {
526
- return initDeferred ().DefaultTimerGroupPtr .release ();
527
- }
511
+ SignpostEmitter &signposts () { return Signposts; }
512
+ sys::SmartMutex<true > &timerLock () { return TimerLock; }
513
+ TimerGroup &defaultTimerGroup () { return DefaultTimerGroup; }
528
514
Name2PairMap &namedGroupedTimers () {
529
515
return *initDeferred ().NamedGroupedTimersPtr ;
530
516
}
@@ -561,11 +547,10 @@ static sys::SmartMutex<true> &timerLock() {
561
547
static TimerGroup &defaultTimerGroup () {
562
548
return ManagedTimerGlobals->defaultTimerGroup ();
563
549
}
564
- static TimerGroup *claimDefaultTimerGroup () {
565
- return ManagedTimerGlobals->claimDefaultTimerGroup ();
566
- }
567
550
static Name2PairMap &namedGroupedTimers () {
568
551
return ManagedTimerGlobals->namedGroupedTimers ();
569
552
}
570
553
571
554
void llvm::initTimerOptions () { *ManagedTimerGlobals; }
555
+
556
+ void *TimerGroup::acquireTimerGlobals () { return ManagedTimerGlobals.claim (); }
0 commit comments