mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-04 09:45:00 +00:00
if a timergroup is destroyed before its timers, print times.
llvm-svn: 99873
This commit is contained in:
parent
2a254fd348
commit
3e11ba35b0
@ -171,6 +171,7 @@ public:
|
||||
explicit TimerGroup(const TimerGroup &TG) : FirstTimer(0) {
|
||||
operator=(TG);
|
||||
}
|
||||
~TimerGroup();
|
||||
|
||||
void operator=(const TimerGroup &TG) {
|
||||
assert(TG.FirstTimer == 0 && FirstTimer == 0 &&
|
||||
@ -181,11 +182,6 @@ public:
|
||||
|
||||
void setName(const std::string &name) { Name = name; }
|
||||
|
||||
~TimerGroup() {
|
||||
assert(FirstTimer == 0 &&
|
||||
"TimerGroup destroyed before all contained timers!");
|
||||
}
|
||||
|
||||
void PrintQueuedTimers(raw_ostream &OS);
|
||||
|
||||
private:
|
||||
|
@ -128,6 +128,6 @@ StatisticInfo::~StatisticInfo() {
|
||||
OutStream << '\n'; // Flush the output stream...
|
||||
OutStream.flush();
|
||||
|
||||
if (&OutStream != &outs() && &OutStream != &errs() && &OutStream != &dbgs())
|
||||
if (&OutStream != &outs() && &OutStream != &errs())
|
||||
delete &OutStream; // Close the file.
|
||||
}
|
||||
|
@ -237,14 +237,22 @@ NamedRegionTimer::NamedRegionTimer(const std::string &Name,
|
||||
// TimerGroup Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
TimerGroup::~TimerGroup() {
|
||||
// If the timer group is destroyed before the timers it owns, accumulate and
|
||||
// print the timing data.
|
||||
while (FirstTimer != 0)
|
||||
removeTimer(*FirstTimer);
|
||||
}
|
||||
|
||||
|
||||
void TimerGroup::removeTimer(Timer &T) {
|
||||
sys::SmartScopedLock<true> L(*TimerLock);
|
||||
|
||||
// If the timer was started, move its data to TimersToPrint.
|
||||
if (T.Started) {
|
||||
T.Started = false;
|
||||
if (T.Started)
|
||||
TimersToPrint.push_back(std::make_pair(T.Time, T.Name));
|
||||
}
|
||||
|
||||
T.TG = 0;
|
||||
|
||||
// Unlink the timer from our list.
|
||||
*T.Prev = T.Next;
|
||||
@ -257,9 +265,9 @@ void TimerGroup::removeTimer(Timer &T) {
|
||||
return;
|
||||
|
||||
raw_ostream *OutStream = GetLibSupportInfoOutputFile();
|
||||
|
||||
|
||||
PrintQueuedTimers(*OutStream);
|
||||
|
||||
|
||||
if (OutStream != &errs() && OutStream != &outs())
|
||||
delete OutStream; // Close the file.
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user